プルリクエスト(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 --continue
rebase処理が再開されます。再びコンフリクトが発生するとrebase処理が中断されます。
-
コンフリクトが発生しなくなるまで修正と
rebase
を繰り返す -
全てのコンフリクトが解決したら、
-f
オプションを追加した上でリモートリポジトリにpush
する$ git status => rebaseが完了していることを確認する。完了していればrebasingのようなメッセージが出なくなるはず $ git push -f origin feature/hoge:feature/hoge
(因みにリモートリポジトリにfeature/hogeを作っていない場合は最後の
push
操作は不要です)
注) git操作は自己責任でお願いしますm(_ _)m
[参考]