プルリクエスト(Pull Request)をしようとした時に競合してて、マージができない場合の対処方法を調べたのでメモしておきます。
前提
developブランチに対してfeature/hogeブランチをプルリクしたとき、競合が発生したものとします。
競合を解決するまでdevelopにfeature/hogeブランチをマージすることはできませんので、この記事ではrebaseを使って事象を解決します。(参考)
手順
-
developブランチを
pullして最新の状態にする$ git checkout develop $ git pull origin develop -
feature/hogeブランチに切り替える
$ git checkout feature/hoge -
feature/hogeブランチに対してdevelopブランチを
rebaseする$ git branch => カレントのブランチがfeature/hogeであることを念のため確認 $ git pull --rebase origin develop途中でコンフリクトが発生すると、そこでrebase処理が中断されます。
-
競合箇所を修正する
-
修正が完了したら
addしてrebaseを再開する$ git add . $ git status => コンフリクトが解消されていることを確認する $ git rebase --continuerebase処理が再開されます。再びコンフリクトが発生するとrebase処理が中断されます。
-
コンフリクトが発生しなくなるまで修正と
rebaseを繰り返す -
全てのコンフリクトが解決したら、
-fオプションを追加した上でリモートリポジトリにpushする$ git status => rebaseが完了していることを確認する。完了していればrebasingのようなメッセージが出なくなるはず $ git push -f origin feature/hoge:feature/hoge(因みにリモートリポジトリにfeature/hogeを作っていない場合は最後の
push操作は不要です)
注) git操作は自己責任でお願いしますm(_ _)m
[参考]