機械翻訳について

マージ競合の解決

レビュー・ブランチがターゲット・ブランチとマージされるときに、Gitでコードの競合を自動的に解決できます。 ただし、競合は手動で解決する必要がある場合があります。

「マージ・リクエスト」ページで、「マージ」ボタンが「マージ競合」ボタンに置き換えられている場合は、マージの競合を示します。

両方のブランチをマージする前に、ターゲットおよびレビュー・ブランチの異なるファイルが更新されると、Gitは競合を自動的に解決します。 マージ競合は、両方のブランチがマージされる前に、同じファイルの同じ行がレビュー・ブランチおよびターゲット・ブランチで更新されると報告されます。 ほとんどのユーザーは、ブラウザベースの競合解消ツールを使用します:

  1. 競合があるマージ・リクエストを開きます。
  2. 「マージ競合」をクリックします。
    「マージ競合」ダイアログが開きます。
  3. 「競合の解決」をクリックして、競合解消エディタを開きます。
    左側のペインには、競合があるファイルの数が表示され、それらがリストされます。 また、各ファイルの競合数も表示されます。 右側のペイン(コード・エディタ)には、左側のペインに競合が表示された強調表示されたファイルが表示されます。
  4. 右矢印を使用して、最初(または次)の競合に移動します。
    前の競合がある場合は、左矢印を使用して前の競合に移動できます。 競合の原因となった違いを確認するには、「差分の表示」をクリックします。
  5. 競合を解決するには、競合マーカー(行番号の横にある円)をクリックして、使用する変更を選択します。
    一方のマーカーでは「変更の使用」を選択し、もう一方のマーカーでは「変更の使用」を選択します。 マーカーが赤に変わり、選択内容が示されます。
  6. ファイル内を移動して各競合を個別に解決するか、「競合数の解決」(#はファイル内の競合数を示します)を使用して、ファイル内のすべての競合を同じ方法で解決します。
    競合がなくなるまで続行します。 最後に選択した解決に問題がある場合は、「解決の破棄」をクリックします。 すべての選択内容を破棄してやり直すには、「すべて破棄」をクリックします。
  7. 「レビューの更新」をクリックして、レビュー・ブランチにファイルをコミットします。
  8. 「マージ」をクリックし、コミットをターゲット・ブランチにプッシュします。
競合がなくなったレビュー・ブランチのファイルは、ターゲット・ブランチとマージされました。 「マージ・リクエスト」ページで追加の操作は必要ありません。 レビュー・ブランチを削除する場合は、「マージ・リクエスト」ページを開くかリフレッシュし、「ブランチの削除」をクリックします。
競合のあるファイルが多すぎる場合、または競合のあるファイルが大きすぎる場合は、テキスト・エディタでターゲット・ブランチ内の同じファイルのコードを使用してレビュー・ブランチ内の競合する各ファイルを手動でレビューし、競合するコード行を解決する必要があります。 次に、ダイアログに表示されるGitコマンドに従って、Gitコマンドラインとの競合を解決する必要があります:
  1. コンピュータでGit CLIを開きます。

  2. プロジェクトGitリポジトリのクローンをすでに作成している場合、そのディレクトリに移動します。

    Gitリポジトリのクローンを作成していない場合は、クローンを作成します。

  3. 「マージ競合」ダイアログに表示されるコマンドを実行します。

    これらのコマンドは、競合を解決し、ファイル内の競合するコード行をマークするのに役立ちます。

  4. 競合を含む各ファイルをテキスト・エディタで開きます。

    競合のあるコンテンツは、<<<<<<<=======および>>>>>>>でマークされます。 <<<<<<<=======の間の行には、ターゲット分岐からのコードが表示されます。 =======>>>>>>>の間の行には、レビュー・ブランチのコードが表示されます。

  5. コンテンツをレビューして更新します。 保存する前に、競合する各ファイルから<<<<<<<=======および>>>>>>>を必ず削除してください。

  6. すべてのファイルを保存してコミットします。

    競合しているファイルのステータスを表示するには、git statusコマンドを実行します。

  7. コミットをターゲット・ブランチにプッシュします。

    ノート:

    コミットをリモート・リポジトリにプッシュしようとしたときに、「Update requires 'Merge-Request' line present in the commit-message」というメッセージが表示された場合は、マージ競合がまったく示されません。 これは、変更をプッシュしているリモート・リポジトリが保護されていることを指します。 MRをマージする前に、リモート・リポジトリの開発ブランチには、コード・レビューの承認のためのマージ制限があります。 「Merge-Request」というテキストで始まる特定のコミット・メッセージでコミットするタグのみを受け入れるように設定されました: ...". リモート・リポジトリはこのように設定されています(レビューが必要)。これにより、すべての変更(コミット)が意図したマージ・リクエスト・ワークフローを通過したことを確認できます。このワークフローでは、すべての変更がプッシュ前にレビューおよび承認されます。

レビュー・ブランチ内の競合するファイルがターゲット・ブランチとマージされるようになりました。 「マージ・リクエスト」ページで追加の操作は必要ありません。