マージが起きたらさっさと解消しようという教訓

はじめに


Gitを使って開発してるのですが・・・

複数人で1つのプロダクト開発を行ってたらコンフリクトは起こることはよく有ります

俗に言うマージコンフリクトですね

今回はそんなマージコンフリクトで起こった事を備忘録的に残します

まず結論・・・


気づいた時点(Github,gitlab,stashとか)で、さっさとコンフリクトは解消しましょう

後にまとめて行うのは、無謀もいいとこです

1つ2つのコミット差分ならまだしも
10個のコミットが積み上げられ、かつその大半がコンフリクト起こすような状況だと直すのに苦労します

# 解消に1時間かかりましたorz

なので、さっさと直してしまいましょう(他人の書いたコードまでは責任取れないよw)

コンフリクト解消時に起こったこと


上記のことだけなら、反省だけで次回からは行わないようにすればいいだけの話です

ですが、コンフリクト解消時に奇妙なことが起こりました

以下のような状態でmasterのコードをブランチにとりこんだ時(実際はもう少しコンフリクト解消することがありました)

1
2
3
(master) : (起点) - [コンフリクト有(1)] - [コンフリクト有(2)] - [コンフリクト有(3)] - [ファイル移動] - [コンフリクト有(4)] - [コンフリクト無]
              |  
(branch) :   [A] - [B] - [C]

コンフリクト有(2)のコンフリクトを解消した瞬間に、ブランチの状態(merge/CONFLICT)だけでも、マージの継続をすることが出来なくなりました

このコマンドだけが使えました

  • continueは受け付け無い
  • abortとskipは受け付ける

そのため、一度abort→再マージをしたのですが・・・
今度は、コンフリクト(3)で同じ現象。。。

諦めてskipをしましたorz
そうすると、マージが全てブランチに取り込まれました・・・(ファイル移動は取り込まれてないので別途実施)

こういう恐ろしい事態(マージがうまくいかない)があったので、気をつけようねという自戒と対処結果のメモでしたw