Git がブランチ間の差異を自動的に解決してマージできる� �合もあります。 通常、変更は異なる行にあったり、さらには異なるファイルにあったりするので、コンピュータにとってマージの理解がシンプルになります。 一方、Git が自力では差異を解決できず、あなたの介入が必要となることもあります。 しばしば、人々が同じファイルの同じ行に異なる変更をした� �合や、ある人が編集したファイルを他の人が削除していた� �合にマージコンフリクトが生じます。
GitHub Enterprise Server上でプルリクエストをマージできるようにするには、すべてのマージコンフリクトを解決しなければなりません。 プルリクエスト中の比較ブランチとベースブランチ間でマージコンフリクトがある� �合、[Merge pull request] ボタンの上に、競合する変更を持つファイルのリストが表示されます。 [Merge pull request] ボタンは、比較ブランチとベースブランチ間のすべての競合が解決されるまで、非アクティブになっています。
マージコンフリクトを解決する
マージコンフリクトを解決するには、競合しているファイルを手作業で編集し、最終のマージに残したい変更を選択しなければなりません。 マージコンフリクトを解決するにはいくつかの方法があります。
- マージコンフリクトが、Git リポジトリ中の異なるブランチ上で同じファイルの同じ行に異なる変更をしたといったような、競合する行の変更から生じた� �合には、コンフリクトエディタを使って GitHub Enterprise Server 上で解決できます。 詳しい情� �については、「GitHub でマージコンフリクトを解決する」を参照してく� さい。
- 他のすべての種類のマージコンフリクトについては、リポジトリのローカルクローン中でマージコンフリクトを解決し、変更を GitHub Enterprise Server 上のブランチにプッシュしなければなりません。 変更のプッシュには、コマンドラインや GitHub Desktop のようなツールが利用できます。 詳細は「コマンドライン上でマージコンフリクトを解決する」を参照してく� さい。
コマンドライン上にマージコンフリクトがあるなら、自分のコンピュータ上でローカルにマージコンフリクトを解決するまでは、ローカルの変更を GitHub Enterprise Server にプッシュできません。 マージコンフリクトのあるコマンドライン上のブランチをマージしようとすると、エラーメッセージが返されます。 詳細は「コマンド ラインを使用してマージコンフリクトを解決する」を参照してく� さい。
$ 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