LoginSignup
0
3

More than 3 years have passed since last update.

[git] リモートワーカーが多いチームでコンフリクト解決を複数人でコラボして進めたい

Last updated at Posted at 2019-08-14

課題

gitのマージについてはたくさんの解説記事がありますが、コンフリクトの解決は、
1) mergeコマンドを実行
2) コンフリクトが発生したら、ファイルを編集して解決
3) add > commit > push または merge --continue > push
という解説になっているかと思います。

ところが、私のチームでは、最近、
・トピックブランチ同士をマージすることが多く、
・コンフリクト箇所に関係しているエンジニアが複数人に渡り、誰か一人でコンフリクト解決を完結できる状況でなく、
・その関係者がリモートワーク(テレワーク)していて、コンフリクト解決の作業を一緒にやりにくい
こんなことが増えてきています…

要するに、コンフリクト解決の作業を、離れた複数のメンバーでコラボして進めなければならない、というような状況です。
冒頭のような教科書的な手順では、対応しづらくて困っています。:thinking:

解決案

(注)テスト用のリポジトリで検証したのですが、まだ実運用には乗せていませんので、解決"策"じゃなくて"案"です。

【事例】
・masterから、9月リリース向けのブランチ develop-201909 を作成している。
・develop-201909 から、12月リリース向けのブランチ develop-201912 を作成し、並行して開発を進めている。
・develop-201912 には 最終的に develop-201909 の全機能を含める必要があるため、develop-201912 に develop-201909 をマージしたい。
スクリーンショット 2019-08-13 7.26.30.png

【手順1】
develop-201912 から、マージ作業をコラボするための作業ブランチ merge-201912 を作成する。
スクリーンショット 2019-08-13 7.27.27.png
マージ作業中、develop-201912 にマージを行わないようにチームに報知する。
あるいは、GitLabでは設定によって禁止することができます。
(参考)GitLabでmasterへのコミットを防ぐ

【手順2】
merge-201912 に develop-201909 をマージする。この時、コンフリクトに対して何も編集せず、 <<<<<<< HEAD などのマークもそのまま add > commit > pushしてしまう。
スクリーンショット 2019-08-13 7.30.38.png
スクリーンショット 2019-08-13 7.32.41.png

【手順3】
各エンジニアは、merge-201912 のコンフリクト箇所( <<<<<<< HEAD のマークがある箇所)に対して適切な改修を行い、各々commit > pushを行う。
スクリーンショット 2019-08-13 7.33.47.png

【手順4】
全エンジニアの手順3.の作業が終わったら、develop-201912 に merge-201912 をマージする。※コンフリクトはしないはず
スクリーンショット 2019-08-13 7.35.26.png

【手順5】
作業が終わったら、merge-201912 は用済みなので削除。
スクリーンショット 2019-08-13 7.36.41.png

この後試しに、develop-201912 に deveop-201909 のマージを試みると、「マージできるものはないよ」というメッセージが表示されました。
すなわち、仮に今後 deveop-201909 に追加コミットが入って再度マージをする際にも、問題はなさそうです。
スクリーンショット 2019-08-12 20.42.21.png

まとめ

上の手順で、課題だった、「複数人でコラボしながらのマージコンフリクト解決」ができそうな感触を得ました。

デメリットとしては、手順2の <<<<<<< HEAD などのコミットが履歴として残ってしまいます。
ですが、「どのようにコンフリクトしたか」「誰がどのように解決したか」がトレース可能なので、それはそれでメリットがあるかなと考えています。

一方、「mergeを実行した時にコンフリクトを無視する」というのは、gitのお作法から外れているようで、少々不安もあります。
ギークの方、「この案じゃこんな場合には使えないよ」とか「他にこんな上手い方法があるよ」などありましたら、コメント欄でご教示ください!:bow_tone1:

今後、上手く実運用に乗りましたら、記事をアップデートしたいと思います。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3