結論
non fast-forward
のマージ*1を延々と繰り返すとよい。
実例
master
ブランチのコミット履歴が「A→B→C」とする。development
ブランチのコミット履歴が「A→B→C→D」とする。このとき、以下のコマンドを繰り返すと master
ブランチ と development
ブランチ が永遠に追いかけっこをする。
$ git checkout master $ git merge --no-ff development $ git checkout development $ git merge --no-ff master $ git checkout master $ git merge --no-ff development $ git checkout development $ git merge --no-ff master $ git checkout master $ git merge --no-ff development $ git checkout development $ git merge --no-ff master (以下略)
fast-forward
なマージ*2をすれば master
ブランチ と development
ブランチが「マージを行った時点で一致する」ため、追いかけっこができなくなって一件落着。
$ git checkout development $ git merge master Updating 4a7d861..348653d Fast-forward
もちろん non fast-forward
なマージを行った場合でも、その後に master
ブランチ と development
ブランチを手動で一致させれば問題はない*3。