git mergeの履歴の違いを図にして整理してみた


これは何?

  • git merge コマンドには、--no-ffオプションや--squashオプションがあり。
  • もう語り尽くされている部分ですが、それらの違いを整理して図にしてみたものです。

前提

  • merge前のブランチは、git rebase masterしておく。

git merge の履歴の違い

ネットワーク図的な特徴

  • --no-ff : マージコミットが作られる + コミットログのネットワーク図を見ればどこから分岐してどこにマージされたのか視覚的にすぐわかる。
  • --squash : コミットが1つにまとまって綺麗 + コミット履歴が1列になる + masterブランチとの関係性が途切れる
  • オプションなし : コミット履歴が一列になる。(masterブランチとbranchXブランチが同じ位置にくる)