Edited at

git mergeコマンドのオプションまとめ

More than 1 year has passed since last update.

備忘録。


--ff

デフォルト設定。オプションに何も指定しない場合は、このオプションが適用される。

fffast-fowardの略。

gitでいうところの「fast-forwardな関係」とは、二つのブランチが同じ線上にある状態のこと。

つまり、ブランチAがブランチBの延長線上にあり二つが枝別れしていない状態のことを指す。

$ git merge --ff {branch_name}

マージする二つのブランチがfast-forwardな関係の場合、マージコミットは作られない。マージ元ブランチのheadがマージ先ブランチのheadに移動するだけ。

二つのブランチがfast-forwardな関係でない場合は、マージコミットが作られる。


--no-ff

$ git merge --no-ff {branch_name}

マージする二つのブランチがfast-forwardな関係であってもそうでなくても、必ずマージコミットが作られる。


--squash

$ git merge --squash {branch_name}

マージする二つのブランチがfast-forwardな関係であってもそうでなくても、マージコミットは作られない。

ワークツリーとインデックスのみ、マージ元ブランチの変更分がすべて取り込まれた状態になる。

トピックブランチのコミットを一つにまとめたい場合などに使う。