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

git-reverse,GitHub

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」ボタンが活性化しています。

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