自分用のメモとしてまとめます。
Conflictの起き方
例えば共通で利用しているdevelopブランチがあったとして、そこからfeatureブランチを切って開発している。developブランチがすでに同じ個所が更新されている場合、featureブランチをマージするときにConflictが起きる。
Conflictを修正するフロー
developにマージする前に、featureブランチにdevelopブランチの修正を反映しておくことでConflictを修正できる。
実際にConflictを起こして解消してみる
スタート時点
developブランチを更新
featureブランチで同じ個所を更新
featureブランチからPush & Pull Rrequest
この状態で、ブラウザからfeature/TestをdevelopにマージするPRを出してみる。
Conflictになることを確認。
VS上でConflictを解消する
まずlocalのdevelopブランチを最新化
developをチェックアウト。現在developが古い状態になっていることを確認。
developをPullし、最新の状態になったことを確認。先ほどのブラウザからの変更が反映されている。
localのdevelopをlocalのfeature/Testにマージ
feature/Testブランチをチェックアウト。Git > ブランチの管理からdevelopをfeature/Testブランチにマージする。
localでConflictを解消
マージ時に競合が出るので、解決をクリック。
VSのマージ機能を利用して解消。
今回はfeatureの内容が正しい前提で進める。
Conflictを解消するCommitをfeature/TestにPush
修正した状態で保存してCommit、Push。
グラフを見ると、developのマージと競合の解決に2個分のCommitがある。
ブラウザからPRを再度確認するとConflictが解消されている。
プラクティス
お勧めは頻繁にDevelopをFeatureに頻繁にマージしておくこと。最低限Pushする前に一度ローカルで実施し、解消してからPushするようにする。