Git

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な関係であってもそうでなくても、マージコミットは作られない。
ワークツリーとインデックスのみ、マージ元ブランチの変更分がすべて取り込まれた状態になる。
トピックブランチのコミットを一つにまとめたい場合などに使う。