LoginSignup
97
106

More than 5 years have passed since last update.

pull requestでCan't automatically merge発生の場合の対応

Last updated at Posted at 2016-02-24

pull requestでCan't automatically merge発生の場合の対応

※用語の定義
hogehogeブランチ => 自身が開発するブランチ
developブランチ => チームの各人が開発したブランチをmergeするブランチ

《発生した問題》
git push でリモートにあげたhogehogeブランチをdevelopブランチへpull requestしたところCan't automatically mergeのエラーがでてmergeが出来ない。

error_img.png

《原因》
実装前にベースコードとしてローカルにpullしたdevelopブランチとリモートにあったdevelopブランチが合致しなかったので、conflictが起きていた。

※用語の定義
実装前にリモートからpullしたdevelopブランチ => developA
pull requestした際にリモートに存在していたdevelopブランチ => developA+
developブランチのコード => ベースコード

ローカルでdevelopAをベースに作成したhogehogeブランチを実装中にも、リモート側でdevelopAの実装が進み、developA+となっていた。
そうなると、pull requestを出したときに、developの部分がAとA+の差分だけ異なるので、mergeができない。
※イメージ図の左から右へ時間が経過しています。

fail.png

《解決策》
ローカル上のdevelopAをリモート上と同じdevelopA+にして(pullして)、hogehogeブランチがそのdevelopA+をmergeすれば差分がなくなり、developブランチへmergeできる。

success.png

コマンド

//hogehogeブランチにて実装完了
$ git add .
$ git commit -m "(コメント)"
$ git checkout develop
$ git pull origin develop # リモートのdevelopA+をローカルのdevelopAへpull(fetchでも良い)
$ git checkout hogehoge
$ git rebase develop # gitmerge develop でも良い
// conflictするので、conflictした箇所を修正 (hogehogeブランチの中のdevelopAの部分をdevelopA+へ変更する作業)
// conflictを修正したコードを保存
$ git add .
$ git rebase --continue
$ git push origin hogehoge -f # 強制的な force push 

以上です。

97
106
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
97
106