1
1

Visual StudioでPull Request時のコンフリクト解消

Last updated at Posted at 2023-08-27

自分用のメモとしてまとめます。

Conflictの起き方

例えば共通で利用しているdevelopブランチがあったとして、そこからfeatureブランチを切って開発している。developブランチがすでに同じ個所が更新されている場合、featureブランチをマージするときにConflictが起きる。
image.png

Conflictを修正するフロー

developにマージする前に、featureブランチにdevelopブランチの修正を反映しておくことでConflictを修正できる。
image.png

実際にConflictを起こして解消してみる

スタート時点

developもfeatureも同じ状態とする。
image.png

developブランチを更新

試しにブラウザから直接更新してしまう。
image.png

featureブランチで同じ個所を更新

VSで同じファイル、同じ行を更新してPushする。
image.png

featureブランチからPush & Pull Rrequest

この状態で、ブラウザからfeature/TestをdevelopにマージするPRを出してみる。
image.png
Conflictになることを確認。
image.png

VS上でConflictを解消する

まずlocalのdevelopブランチを最新化

developをチェックアウト。現在developが古い状態になっていることを確認。
image.png
developをPullし、最新の状態になったことを確認。先ほどのブラウザからの変更が反映されている。
image.png

localのdevelopをlocalのfeature/Testにマージ

feature/Testブランチをチェックアウト。Git > ブランチの管理からdevelopをfeature/Testブランチにマージする。
image.png
image.png

localでConflictを解消

マージ時に競合が出るので、解決をクリック。
image.png
VSのマージ機能を利用して解消。
今回はfeatureの内容が正しい前提で進める。
image.png

Conflictを解消するCommitをfeature/TestにPush

修正した状態で保存してCommit、Push。
image.png
グラフを見ると、developのマージと競合の解決に2個分のCommitがある。
image.png
ブラウザからPRを再度確認するとConflictが解消されている。
image.png

プラクティス

お勧めは頻繁にDevelopをFeatureに頻繁にマージしておくこと。最低限Pushする前に一度ローカルで実施し、解消してからPushするようにする。

1
1
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
1
1