こんばんわKuboです。
私が担当しているプロジェクトのgitリポジトリは、CodeCommitを利用しているのですが
2019年の6月頃にプルリクもらってマージする方法が2つ追加されて現場が混乱してたので説明用の資料作成ついでに解説したいと思います。
マージ方法は3種類
今回追加されたのが「スカッシュマージ」と「3ウェイマージ」です。
今までのマージは、「早送りマージ」として残っておりプルリク時のマージ時はこの3つから選択することになります。
早送りマージ
gitコマンド相当
git merge --ff-only
デフォルトのマージ方法でパラメータのFFはfast forwardの略です。
fast forwardは、マージ先となるブランチとの差分がマージ元のブランチでの変更しかない場合に,ブランチの HEAD をマージするブランチの先端にそのまま移動させるマージ方法で、onlyとついた場合は、それ以外は拒否されます。
スカッシュマージ
gitコマンド相当
git merge --squash
スカッシュマージは、FF以外のプルリクエストを特徴と言えばマージ元のコミットをひとまとめにしてマージ先に登録することです。
コミット履歴が一つにまとめられるのであとで処理を追った時に見やすい
しかしデメリットとしてもまとめてしまったので詳細が追いづらくなる場合がある
マージを戻すことが出来ない
3ウェイマージ
gitコマンド相当
git merge --no-ff
3ウェイマージは、マージ先のブランチへコミットが作成されます。
このマージの記録やコミットの履歴が詳細に残る反面細かいコミットも履歴に残るので履歴を追う場合大変になります。
マージは簡単に戻すことが出来ます。
まとめ
私の担当するプロジェクトでは早送りマージが出来ない時は3ウェイマージって結論になりました。
皆さんはいかがでしょうか?
以上、Kuboでした。