Visual Studio でのマージの競合を解決する

一方のブランチを他方のブランチにマージすると、一方のブランチでのコミットによるファイルの変更が、他方での変更と競合する可能性があります。 Git では、ご利用のリポジトリ内の履歴を使用して、マージされたファイルがどのようにあるべきかを判断することで、これらの変更の解決を試みます。 変更をマージする方法が明確ではない場合、Git によってマージは停止され、競合しているファイルが通知されます。

マージの競合を防ぐ

コミット間でファイルの内容が大幅に変更されない限り、Git ではほとんどの状況でファイルの変更が優れた方法で自動的にマージされます。 使用しているブランチが自分のメイン ブランチよりはるかに遅れている場合は、pull request を開く前にブランチのリベースを検討してください。 リベースされたブランチは、競合することなく main ブランチにマージされます。

マージ競合を解決する

  • 同じブランチ上の他のユーザーと共同作業を行っている場合、変更をプッシュするときにマージの競合が発生する可能性があります。

    プッシュ後のマージ競合のスクリーンショット。

  • 作業しているローカル ブランチがそのリモート追跡ブランチより遅れているかどうかが Visual Studio で検出され、選択可能なオプションが提示されます。

    ローカル ブランチがリモート ブランチより遅れている場合に使用できるオプションのスクリーンショット。

    注意

    使用しているリモート リポジトリで強制プッシュがサポートされている場合は、[Git]>[設定] を使用して、それを有効にすることができます。

    この例では、リモート リポジトリに導入された変更を含めるために、[プル後にプッシュ] を選択します。 変更をプルするときに、または 2 つのブランチのマージを試みるときにマージの競合が存在する場合は、 [Git 変更] ウィンドウ、 [Git リポジトリ] ウィンドウ、および競合を含むファイルにおいて、Visual Studio から通知されます。

    マージ競合の通知のスクリーンショット。

  • [Git 変更] ウィンドウの [マージされていない変更] の下には、競合を含むファイルの一覧が表示されます。 競合の解決を開始するには、ファイルをダブルクリックします。 または、競合を含むファイルをエディターで開くには、 [マージ エディターを開く] を選択できます。

    [Git 変更] ウィンドウのマージ競合状態のスクリーンショット。

  • マージ エディターで、次の方法のいずれかを使用して競合を解決する作業を開始できます (番号の付いたスクリーンショットに示すとおり)。

    1. 競合を 1 行ずつ確認し、右側または左側のどちらを保持するかを、チェックボックスをオンにすることで選択します。

      または

    2. [受信] ボタン (または F10 キーを押してすべての受信変更を受け入れる) を選択するか、[現在の変更を取る] ボタン (または F11 キーを押して) を選択して、競合するすべての変更の現在のバージョンを保持します。 同じことを行うには、いずれかのサイド バイ サイド フレームの上部にあるチェックボックスのいずれかを選択します。

      または

    3. [結果] ウィンドウでコードを手動で編集します。

    Visual Studio 2022 でのマージ競合の解決方法を示すスクリーンショット。

    ヒント

    マージ エディターの既定のレイアウトが気に入らない場合は、歯車のドロップダウン メニューを使用して自由に変更できます。

    マージ エディターのレイアウト オプションのスクリーンショット。

    たとえば、次のスクリーンショットは、縦表示がどのように見えるかを示しています。

    マージ エディターのユーザー インターフェイスの縦表示のスクリーンショット。

  • マージ競合の解決が完了したら、 [マージの許可] を選択します。 競合しているすべてのファイルに対してこのプロセスを繰り返します。

    Visual Studio 2022 の [マージの許可] アクションのスクリーンショット。

  • [Git 変更] ウィンドウを使用してマージ コミットを作成し、競合を解決します。

    [Git 変更] ウィンドウを使用してマージ コミットを作成する方法のスクリーンショット。

    Note

    ファイルに加えた変更をすべて保持する必要がある場合は、[マージされていない変更] セクションでそれを右クリックし、[現在を保持 (ローカル)] を選択してください。マージ エディターを開く必要はありません。

    [現在を保持] メニュー オプションのスクリーンショット。

ヒント

使用可能なアクセシビリティ オプションの詳細については、「Visual Studio のアクセシビリティのヒントとテクニック」ページの「Git キーボード ショートカット」セクションを参照してください。

差分ツールを構成する

BeyondCompare や KDiff3 などのサード パーティの差分ツールを使用するように.gitconfigファイルを設定すると、Visual Studio によってそのツールが使用されます。 通常、Visual Studio で差分が表示される場合は、常に、選択したツールで別のウィンドウが開きます。 例については、この StackOverflow の質問を参照してください。