Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-09-25. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

マージ競合について

マージコンフリクトは、競合するコミットを持つブランチをマージしようとしたときに生じるもので、最終のマージにどちらの変更を取り入れるかを Git が判断するのに手助けが必要になります。

Git がブランチ間の差異を自動的に解決してマージできる場合もあります。 通常、変更は異なる行にあったり、さらには異なるファイルにあったりするので、コンピュータにとってマージの理解がシンプルになります。 一方、Git が自力では差異を解決できず、あなたの介入が必要となることもあります。 しばしば、人々が同じファイルの同じ行に異なる変更をした場合や、ある人が編集したファイルを他の人が削除していた場合にマージコンフリクトが生じます。

GitHub 上で pull request をマージできるようにするには、マージの競合をすべて解決する必要があります。 pull request 中の比較ブランチとベース ブランチ間でマージ競合がある場合、 [pull request のマージ] ボタンの上に、競合する変更を持つファイルのリストが表示されます。 [Merge pull request] ボタンは、比較ブランチとベースブランチ間のすべての競合が解決されるまで、非アクティブになっています。

マージ競合の解決

マージコンフリクトを解決するには、競合しているファイルを手作業で編集し、最終のマージに残したい変更を選択しなければなりません。 マージコンフリクトを解決するにはいくつかの方法があります。

  • マージの競合が、Git リポジトリ中の異なるブランチ上で同じファイルの同じ行に異なる変更をしたといったような、競合する行の変更から生じた場合には、GitHub 上で conflict editor を使って解決できます。 詳しくは、「GitHub でのマージ コンフリクトを解決する」をご覧ください。
  • 他のすべての種類のマージの競合については、リポジトリのローカル クローン中でマージの競合を解決し、変更を GitHub 上のブランチにプッシュする必要があります。 コマンド ラインを使用するか、GitHub Desktop などのツールを使用し、変更をプッシュできます。 詳しくは、「コマンド ラインを使用してマージ コンフリクトを解決する」をご覧ください。

コマンド ライン上にマージの競合がある場合、コンピューター上のローカルでマージの競合を解決するまでは、ローカルの変更を GitHub にプッシュできません。 マージコンフリクトのあるコマンドライン上のブランチをマージしようとすると、エラーメッセージが返されます。 詳しくは、「コマンド ラインを使用してマージ コンフリクトを解決する」をご覧ください。

$ 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

参考資料