プルリクエストの競合の解決

概要

この記事では、プルリクエストのコンフリクトが発生する原因と、一般的な発生シナリオについて説明します。また、コンフリクトを効果的にレビューして解決するための詳細な手順を段階的に示します。

プルリクエストのコンフリクトは何が原因ですか?

プルリクエストのコンフリクトは、2つのブランチに同じ行のコードに影響するコミットがあり、プルリクエストがどちらの行を保持すべきか自動的に判断できない場合に発生することがあります。これがどのように起こるかを示すために、下の図を参照してください。

この例では、 branch_bbranch_aから作成されます。次に、 myName 関数に影響する変更が branch_bにコミットされ、関数への別の変更が branch_aにコミットされます。プルリクエストが branch_bbranch_aにマージするために作成されると、両方のブランチで同じ行のコードが変更されていることが検出され、コンフリクトが発生します。次のセクションでは、コンフリクトを解決するための2つの異なるオプションを示します。

プルリクエストのコンフリクトをどのように解決しますか?

プルリクエストがコンフリクトに遭遇した場合、ターゲットの変更を保持するか上書きするかのどちらかで解決できます。複数のコンフリクトがある場合は、それぞれを別々に最適な方法で対処してください。異なるコンフリクトに対して異なるアプローチを使用しても問題ありません。

chevron-rightターゲットの変更を保持するhashtag

この方法でコンフリクトを解決するには、コンフリクトしている行を ターゲット ブランチから ソース ブランチにコミットします。図を参照して説明を確認し、下の プルリクエストの競合の解決 セクションにある段階的な手順を参照してください。

circle-info

この方法では、プルリクエストの 「コンフリクトを解決」 機能を使用して、ソースブランチへの変更を自動的にコミットします。

chevron-rightターゲットの変更を上書きするhashtag

この方法でコンフリクトを解決するには、コンフリクトしている行を ソース ブランチから ターゲット ブランチにコミットします。図を参照して説明を確認し、下の プルリクエストの競合の解決 セクションにある段階的な手順を参照してください。

circle-info

この方法では、 ソース ブランチから ターゲット ブランチからの変更を手動でコミットする必要があります。

コンフリクトの解決

1

プルリクエストのコンフリクト

プルリクエストが作成されると、最初にコンフリクトチェックが実行されます。もし ターゲットソース ブランチ間にコンフリクトが見つかった場合、警告が表示され、プルリクエストをマージする前にコンフリクトを解決する必要があります。

2

コンフリクトを確認する

  1. クリック 「コンフリクトを解決」.

  2. コンポーネントをクリックしてコンフリクトを表示します。

circle-exclamation
  1. コンポーネント内の競合しているコードを確認し、コンフリクトをどのように解決するかを判断します。

circle-info

上の プルリクエストの競合の解決 セクションを参照して、プルリクエストのコンフリクトの説明を確認してください。

  1. プルリクエストのコンフリクトを解決する方法は2つあります。各方法を実行する手順については、以下のセクションを参照してください。

    1. ターゲットの変更を保持する:この方法はコンフリクト行を ターゲット ブランチから ソース ブランチからの変更を手動でコミットする必要があります。

    2. ターゲットの変更を上書きする:この方法はコンフリクト行を ソース ブランチから ターゲット ブランチからの変更を手動でコミットする必要があります。

circle-info

複数のコンフリクトがある場合は、それぞれを別々に最も適切な方法で対処してください。異なるコンフリクトに対して異なるアプローチを使用しても問題ありません。

3

ターゲットの変更を保持する

この方法では、プルリクエストの 「コンフリクトを解決」 プルリクエストに組み込まれた機能。

  1. コンフリクトのあるコンポーネントをクリックして解決します。

  2. クリック すべて受け入れる をクリックしてすべての行を保持するか、各行を保持するには 右側 矢印 をクリックします。これにより、ターゲットブランチから選択した行がソースブランチにコピーされます。

  3. ソースブランチに必要な変更をすべて行ったら、 「解決」をクリックします。これによりコンポーネントは 「解決済み」 としてマークされ、変更を追跡できます。

  4. クリック 戻る.

circle-info

コンフリクトのあるすべてのコンポーネントについてこのプロセスを繰り返します。

  1. すべてのコンポーネントが 「解決済み」とマークされたら、 「コンフリクトを解決」.

  2. 入力してください コミットメッセージ.

  3. クリック 「解決」.

  4. コンフリクトを解決した後、プルリクエストは再度コンフリクトを確認します。

  5. もはやコンフリクトがない場合、プルリクエストのメッセージは緑になり「このブランチはマージ可能です」と表示されます。

circle-info

プルリクエストにコンフリクトが残っている場合は、それらを確認して解決してください。すべての問題が解決されるまで繰り返します。

4

ターゲットの変更を上書きする

この方法では、ターゲットブランチを手動で編集して変更をコミットする必要があります。

circle-info

ターゲットブランチの変更を上書きして解決する場合は、プルリクエストをレビューしながらコンフリクトを引き起こしている特定の行とコンポーネントをメモしておくと、解決が容易になります。

  1. クリック コード 左のサイドバーメニューから。

  2. クリックします ターゲット プルリクエストのブランチ。

  3. クリックします 右端にある縦に並んだ三つの プルリクエスト内のコンフリクトのあるコンポーネント。

  4. クリック 編集.

  5. 競合している行または行を編集して、に一致させます ソース ブランチからの変更を手動でコミットする必要があります。

  6. クリック 変更をコミット.

  7. 入力してください コミットメッセージ.

  8. クリック コミット.

circle-info

コンフリクトのあるすべてのコンポーネントについてこのプロセスを繰り返します。

  1. 競合のあるすべてのコンポーネントを ソース ブランチに一致するように編集したら、プルリクエストに戻ります。

  2. クリック プルリクエスト 左のサイドバーメニューから。

  3. プルリクエストをクリックして、すべてのコンフリクトが解決されているか確認します。

  4. もはやコンフリクトがない場合、プルリクエストのメッセージは緑になり「このブランチはマージ可能です」と表示されます。

circle-info

プルリクエストにコンフリクトが残っている場合は、それらを確認して解決してください。すべての問題が解決されるまで繰り返します。

最終更新

役に立ちましたか?