【git】 gitのfast-forwardオプションについて

[課題] fetchしてmergeした際に、コミットが1つ先行してしまう

git merge オプションの --ff, --no-ff, --ff-only の違い

https://yu8mada.com/2018/08/15/the-difference-between-the-git-merge-options-ff-no-ff-and-ff-only/

ファストフォワードマージとは

Git のファストフォワードマージとは, マージされるブランチの HEAD を
マージするブランチの先端にそのまま移動させるマージを指します.

ファストフォワードという言葉がテープを急いで先に進めるという意味のように,
ファストフォワードマージはマージコンフリクトが
一切発生しない素早いマージのためこのように呼ばれるのでしょう.

https://yu8mada.com/2018/08/15/what-is-a-fast-forward-merge-in-git/

non fast-forwardマージのメリット

マージの実行時に、non fast-forwardマージというオプションを指定することで、
fast-forwardマージが可能な場合でも新しくマージコミットを作成して合流させることもできます。


[https://backlog.com/ja/git-tutorial/stepup/04/]
仮にmasterにtopicAブランチをmergeしたとする。

fast-forwardであるmergeの場合mergeのコミットが発行されないため、
masterがその後更新されていった場合に
topicAブランチで行われた作業を参照するのが面倒になる。
mergeの取り消しを行いたいと思った場合かなり面倒。

[https://qiita.com/nog/items/c79469afbf3e632f10a1]

結論

  • 今まで通りnon fast-forwardマージを用いて、mergeコミットを残そう
    (* fast-forwardマージを試すとすれば、Git-flowにおいてfeatureブランチからブランチを切る場合)
  • 1つ先行してしまうのは、マージコミットが作成されていたためであろう