リモートでマージしようとして競合が起きた場合 - Taisei20/its-movi GitHub Wiki

競合(コンフリクト)の解決方法

解決方法は以下2つ

  1. Github上でコードを修正する
  2. ローカルで競合を起こしてコードを修正する

※Github上でコードを修正する方法については簡単なので、ここではローカルで修正する方法について記述します。

ローカルで競合を起こしてコードを修正する方法

前提

開発者Aさん:午前10時30分にリモートリポジトリからローカルのmasterブランチにpullして新たにhogeブランチを切りました。
開発者Bさん:Aさんと同じタイミングで同様にリモートリポジトリからローカルのmasterブランチにpullして新たにfugaブランチを切りました。

開発者Aさんは午前10時45分に開発ブランチhogetest.txtファイルの3行目を編集後A1コミットを作成し、
開発者Bさんも少し遅れて午前10時50分に開発者ブランチfugaで同じtest.txtファイルの3行目を編集後B1コミットを作成しました。

先に開発者Aさんが開発を終えたのでリモートリポジトリhogeブランチにプッシュを行いレビュー後にリモートのmasterブランチにマージしました。 次に、開発者Bさんも開発を終えたのでプッシュをしてレビューもLGTMをもらえたのでマージしようとするとここでコンフリクトが起きました...orz

解決方法

ここでの作業は全て開発者Bさんが行います!

  1. ターミナルからfugaブランチ上でgit fetchを実行
  2. 同じブランチ上でgit merge origin/masterを実行(ここでローカルでコンフリクトが起きます!...orz)
  3. テキストエディタでtest.txtファイルを編集(競合を解決する)
  4. git add -uで編集したファイルをステージに乗せる
  5. git commit -m "コミットメッセージ"でコミットする
  6. git push origin fugaでプッシュを行う
  7. 以前出したfugaブランチのプルリクエストでレビューをもらう
  8. 最後にレビューでLGTMをもらえばマージする
  9. 次の開発に進む前にローカルのmasterブランチ上でgit pullを行う