リモートでマージしようとして競合が起きた場合 - Taisei20/its-movi GitHub Wiki
競合(コンフリクト)の解決方法
解決方法は以下2つ
- Github上でコードを修正する
- ローカルで競合を起こしてコードを修正する
※Github上でコードを修正する方法については簡単なので、ここではローカルで修正する方法について記述します。
ローカルで競合を起こしてコードを修正する方法
前提
開発者Aさん:午前10時30分にリモートリポジトリからローカルのmasterブランチにpullして新たにhoge
ブランチを切りました。
開発者Bさん:Aさんと同じタイミングで同様にリモートリポジトリからローカルのmasterブランチにpullして新たにfuga
ブランチを切りました。
開発者Aさんは午前10時45分に開発ブランチhoge
でtest.txt
ファイルの3行目を編集後A1
コミットを作成し、
開発者Bさんも少し遅れて午前10時50分に開発者ブランチfuga
で同じtest.txt
ファイルの3行目を編集後B1
コミットを作成しました。
先に開発者Aさんが開発を終えたのでリモートリポジトリhoge
ブランチにプッシュを行いレビュー後にリモートのmasterブランチにマージしました。
次に、開発者Bさんも開発を終えたのでプッシュをしてレビューもLGTMをもらえたのでマージしようとするとここでコンフリクトが起きました...orz
解決方法
ここでの作業は全て開発者Bさんが行います!
- ターミナルから
fuga
ブランチ上でgit fetch
を実行 - 同じブランチ上で
git merge origin/master
を実行(ここでローカルでコンフリクトが起きます!...orz) - テキストエディタで
test.txt
ファイルを編集(競合を解決する) git add -u
で編集したファイルをステージに乗せるgit commit -m "コミットメッセージ"
でコミットするgit push origin fuga
でプッシュを行う- 以前出したfugaブランチのプルリクエストでレビューをもらう
- 最後にレビューでLGTMをもらえばマージする
- 次の開発に進む前にローカルのmasterブランチ上で
git pull
を行う