Help us understand the problem. What is going on with this article?

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

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

saekis
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away