GitHubのプルリクエスト(Pull Request)でコンフリクト(Conflict)が発生した場合の解決方法 ~merge編~

GitHubでプルリクエスト(Pull Request)を発行したがコンフリクト(conflict)が発生した場合に、コンフリクトを解消するまで「Merge Pull Request」ボタンが非活性でマージが出来ません。

GitHubのPull Request画面で以下のようなメッセージが表示されている場合です。

This branch has conflicts that must be resolved
Use the web editor or the  to resolve conflicts.
Conflicting files

ブラウザ上でGitHubの「Resolve conflicts」ボタンから解決してもよいですが、今回はローカルのGitのmergeコマンドで解決する方法をご紹介します。

コンフリクト(conflict)の解決手順

コンフリクトが起きた状況

developブランチからmasterブランチへのプルリクエスト(Pull Request)でコンフリクトが発生した場合を想定しています。

ローカルリポジトリのmasterブランチを最新化する

masterブランチをチェックアウトしリモートリポジトリのmasterブランチを取得する

git checkout master
git fetch
git merge origin/master

developブランチをチェックアウト

git checkout develop

developブランチにmasterブランチをマージ

git merge master

コンフリクトを解決する

お使いのエディタでコンフリクトしているファイルを正しい内容に編集する

以下のコマンドでorigin/developに反映する

git add -A
git commit -m 'コメント'
git push origin HEAD

GitHubのPull Request画面で「Merge Pull Request」ボタンをクリックしマージする

コンフリクト解消済みのdevelopブランチをリモートリポジトリのdevelopブランチにPushしたことで、「Merge Pull Request」ボタンが活性化しています。

これで、マージすることが出来るようになりました。

次に読むおすすめ記事

Gitの全体像や基本コマンド、ブランチ運用、トラブル解決手順を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

【完全版】Git初心者向けガイド|基本コマンドから実務トラブル解決まで
プログラムの開発やWeb制作において、いまや必須スキルとなったバージョン管理システム「Git(ギット)」。しかし、これからGitを学び始める初心者の方にとって、「ワークツリーやステージングなど聞き慣れない言葉が多い」「ブランチやマージの仕組…