Git がブランチ間の差異を自動的に解決してマージできる場合もあります。 通常、変更は異なる行または異なるファイル内に存在するため、Git はヘルプなしでそれらをマージできます。 場合によっては、変更の競合を解決するためにあなたの対応が必要になることがあります。 マージの競合は、多くの場合、ユーザーが同じファイルの同じ行に異なる変更を加えた場合や、あるユーザーがファイルを編集し、別のユーザーが同じファイルを削除した場合に発生します。
競合している内容のどちらのバージョンを残すべきかを Git が安全に判断できないため、マージ競合が発生するとマージできなくなります。 GitHubでプルリクエストをマージする前に、すべてのマージ競合を解決する必要があります。 プル要求で比較ブランチとベース ブランチの間にマージの競合がある場合、競合が解決されるまで [マージ プル要求 ]ボタンは非アクティブ化されます。
マージ競合の解決
マージ競合を解決するということは、ブランチがマージされた後に表示される最終的なコンテンツを選択することを意味します。 適切なツールは、競合の種類によって異なります。
-
単純な行の競合は、多くの場合、 GitHubで解決できます。 「Resolving a merge conflict on GitHub」を参照してください。
-
より複雑な競合は、ローカルクローンで解決し、pull request ブランチにプッシュバックする必要があります。 「Resolving a merge conflict using the command line」を参照してください。
-
Copilot クラウドエージェント にアクセスでき、リポジトリに対して有効になっている場合、 Copilot はマージ ボックスから競合を解決するのに役立ちます。 「AUTOTITLE」を参照してください。
コマンド ラインで、マージが自動的に完了できないタイミングが Git によって通知されます。 競合を解決し、その解決内容をコミットするまで、マージ結果をプッシュすることはできません。
$ git merge BRANCH-NAME
> Auto-merging styleguide.md
> CONFLICT (content): Merge conflict in styleguide.md
> Automatic merge failed; fix conflicts and then commit the result