Visual Studio でのマージの競合を解決する
あるブランチを別のブランチにマージすると、あるブランチのコミットからのファイルの変更が、もう一方のブランチの変更と競合する可能性があります。 Git は、リポジトリ内の履歴を使用して、マージされたファイルの外観を判断することで、これらの変更を解決しようとします。 変更をマージする方法が明確でない場合、Git はマージを停止し、競合するファイルを通知します。
マージの競合を防ぐ
Git は、コミット間でファイルの内容が大幅に変更されない限り、ほとんどの状況でファイルの変更を自動的にマージすることを得意とします。 ブランチが主要ブランチから大きく遅れている場合は、プルリクエストを開く前にブランチをリベースすることを検討してください。 リベースされたブランチは、競合することなくメイン ブランチにマージされます。
マージの競合を解決する
同じブランチ上の他のユーザーと共同作業を行っている場合、変更をプッシュするときにマージの競合が発生する可能性があります。
Visual Studio は、作業中のローカル ブランチがリモート追跡ブランチの背後にあるかどうかを検出し、選択できるオプションを提供します。
手記
リモート リポジトリが Force Pushをサポートしている場合は、Git >設定使用して有効にすることができます。
この例では、プルしてからプッシュ を選択して、リモート リポジトリに導入された変更を含めます。 Visual Studio は、変更をプルするときや2つのブランチをマージしようとして競合が発生した場合、Git Changes ウィンドウや Git Repository ウィンドウ、競合のあるファイルで通知します。
[Git 変更] ウィンドウの [マージされていない変更] の下には、競合を含むファイルの一覧が表示されます。 競合の解決を開始するには、ファイルをダブルクリックします。 または、競合を含むファイルをエディターで開くには、[マージ エディターを開く] を選択できます。
マージ エディターで、次のいずれかの方法を使用して競合の解決を開始します (番号付きスクリーンショットに示されているように)。
競合している項目を1行ずつ確認し、チェックボックスを選択して右側または左側のどちらかを選んでください。
-又は-
[追加を取得] ボタンを選択するか F10 キーを押してすべての入力方向の変更を受け入れるか、[現在を取得] ボタンで (または F11 キーを押して) 競合するすべての変更の現在のバージョンを保持します。 どちらかのサイドバイサイドフレームの上部にあるチェックボックスのいずれかを選択することで、同じことを行うことができます。
-又は-
結果 ウィンドウでコードを手動で編集します。
マージの競合の解決が完了したら、[マージを受け入れる] を選択します。 競合するすべてのファイルに対してこのプロセスを繰り返します。
Git Changes ウィンドウを使用して、マージ コミットを作成し、競合を解決します。
手記
ファイルに対するすべての変更を保持する場合は、[結合されていない変更] セクションでファイルを右クリックし、[マージ エディター] を開かなくても 現在の状態 (ローカル) を選択できます。
ヒント
使用可能なアクセシビリティ オプションの詳細については、「Visual Studio のアクセシビリティに関するヒントとテクニック」ページの「 Git キーボード ショートカット 」セクションを参照してください。
差分ツールを構成する
BeyondCompare や KDiff3 などのサード パーティの差分ツールを使用するように .gitconfig
ファイル を設定した場合、Visual Studio ではこのツールが使用されます。 Visual Studio で通常差分が表示される場合は常に、任意のツールで別のウィンドウが開きます。 例については、この Stack Overflow の質問を参照してください。