Skip to main content

GitHub でのマージ コンフリクトを解決する

コンフリクト エディターを使用すれば、GitHub で行の変更が競合している単純なマージ コンフリクトを解決できます。

GitHubで解決できるマージコンフリクトは、Git リポジトリの別々のブランチで、同じファイルの同じ行に異なる変更がなされた場合など、互いに矛盾する行変更を原因とするもののみです。 その他すべての種類のマージ コンフリクトについては、コマンド ラインでコンフリクトをローカルに解決する必要があります。 詳しくは、「コマンド ラインを使用してマージ コンフリクトを解決する」を参照してください。

Warning

GitHub でマージ競合を解決すると、pull request のベース ブランチ全体が head ブランチにマージされます。 このブランチにコミットすることが間違いでないことを確認してください。 head ブランチがリポジトリのデフォルトブランチである場合、プルリクエストの head ブランチとして機能する新しいブランチを作成するオプションが表示されます。 head ブランチが保護されている場合、コンフリクトの解決をマージすることができないため、新しい head ブランチを作成するように求められます。 詳しくは、「保護されたブランチについて」を参照してください。

  1. リポジトリ名の下にある [pull request] をクリックします。

    リポジトリのメイン ページのスクリーンショット。 水平ナビゲーション バーでは、[pull request] というラベルが付いたタブが濃いオレンジ色の枠線で囲まれています。

  2. [Pull Requests] リストで、解決するマージ コンフリクトを起こしている Pull Request をクリックします。

  3. 指定した pull request の下部周辺で、 [競合の解決] をクリックします。

    pull request にマージの競合があることを示す警告のスクリーンショット。 [マージの競合の解決] ボタンが濃いオレンジ色の枠線で囲まれています。

    Note

    [Resolve conflicts] ボタンが作動しない場合は、pull request のマージの競合が複雑すぎて GitHub では解決できません。 別の Git クライアントを使用するか、コマンドラインで Git を使用して、マージのコンフリクトを解決する必要があります。 詳細については、「コマンド ラインを使用してマージ コンフリクトを解決する」を参照してください。

  4. あなたのブランチの変更だけを保持したいか、他のブランチの変更だけを保持したいか、あるいは両方のブランチからの変更を取り入れられる新しい変更を作成するかを決めてください。 競合マーカー <<<<<<<=======>>>>>>> を削除し、最終的なマージで必要な変更を行います。

  5. ファイルに複数のマージ コンフリクトがある場合は、次の一連のコンフリクト マーカーまで下にスクロールし、ステップ 4 と 5 を繰り返してマージ コンフリクトを解決します。

  6. ファイル内のコンフリクトをすべて解決したら、 [Mark as resolved] をクリックします。

    pull request のマージの競合を解決するためのエディターのスクリーンショット。 [解決済みとしてマーク] ボタンが濃いオレンジ色の枠線で囲まれています。

  7. コンフリクトしているファイルが複数ある場合は、[conflicting files] の下のページの左側で編集する次のファイルを選択し、Pull Request のマージ コンフリクトをすべて解決するまでステップ 4 から 7 を繰り返します。

  8. マージ コンフリクトをすべて解決したら、 [Commit merge] をクリックします。 これにより、Base ブランチ全体が Head ブランチにマージされます。

    pull request のマージの競合を解決するためのエディターのスクリーンショット。 [マージのコミット] ボタンが濃いオレンジ色の枠線で囲まれています。

  9. プロンプトに従い、コミット先のブランチをレビューします。

    head ブランチがリポジトリのデフォルトブランチである場合、コンフリクトを解決するために加えた変更でこのブランチを更新するか、新しいブランチを作成してこれをプルリクエストのヘッドブランチとして使用するかを選択できます。

    新しいブランチを作成する場合は、ブランチの名前を入力します。

    プルリクエストの head ブランチが保護されている場合は、新しいブランチを作成する必要があります。 保護されたブランチを更新するオプションはありません。

    [ブランチの作成と pull request の更新] または [理解しており、BRANCH の更新を続ける] をクリックします。 ボタンテキストは、実行中のアクションに対応しています。

  10. pull request をマージするには、 [pull request のマージ] をクリックします。 その他の pull request マージ オプションの詳細については、「pull request のマージ」を参照してください。

参考資料