Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
86
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@hibriiiiidge

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

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 

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
86
Help us understand the problem. What are the problem?