プルリクエストの画面でMerge出来ない事がわかった場合にどうすればよいか考える。

  • 94
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

githubを使っていて、プルリクエストのMergeボタンが灰色になってて、
あ、コンフリクトが起きそう!
と思った時にどう対応するのが一番よいのか考える。

前提条件

  • github flowを使っている
  • hogehogeブランチ→masterに対してpull requestを送っている。
  • 自分がhogehogeブランチで作業していて、最新の状態がローカルにある。

僕がいいと思った順に書いていきます。

案1.灰色になっていたのを確認した瞬間にgit rebase masterして解消する

  • 前提
    • 自分一人しかそのbranchで作業していない
    • ある程度rebaseがどういうものなのかわかっている。
  • 作業内容
git fetch origin
git checkout master
git pull origin master
git checkout hogehoge
git rebase master
(コンフリクトが起きるので修正)
git add test.txt
git rebase --continue
git push -f origin hogehoge
  • メリット
    • 履歴が綺麗になる。
    • プルリクエストの画面からmergeボタンを押してmergeが出来る(つまり、他の人にレビューしてもらえるって事)
  • デメリット
    • 前提に書いてるのでないと思うけど、push -f使ってるので、誰かがhogehogeブランチからブランチを切ってたり、hogehogeブランチに対してプルリクエストを出していると悲惨な事になる。

※と思ったけど、他の人が作業してても、

git pull --rebase

他の人はこれで変更分を落とせば大丈夫かも。。

案2.灰色になっていたのを確認した瞬間にgit merge masterする

  • 前提
    • 自分以外の誰かがhogehogeブランチで作業している
    • rebaseに対して恐怖感を抱いている。
  • 作業内容
git fetch origin
git checkout master
git pull origin master
git checkout hogehoge
git merge master
(コンフリクトが起きるので修正)
git push origin hogehoge
  • メリット
    • 他の人が作業してても安心
    • 他の人にレビューもしてもらえる。
  • デメリット
    • 履歴がちょっと汚くなる。

案3.リリース直前になってコマンドラインから、masterに直接pushする

  • 前提
    • 僕の中ではこれはやりたくない。
    • プルリクエストの画面からmergeボタンが押せない場合、Use the command lineってリンクをクリックすると出てくるやつと同じような事です。
  • 作業内容
git fetch origin
git checkout master
git pull origin master
git checkout hogehoge
git merge master
(ここでコンフリクトが起きるので解消)
git add test.txt
git commit
git checkout master
git push origin master
  • メリット
    • あまりメリットを感じない
  • デメリット
    • リリース直前になって慌てて作業するのでちょっと。。。
    • プルリクエスト使ってないので、他の人がレビューしにくい。

思った事

案3は選択肢としてないなと思いつつも、もしかするとあるかもしれないと思って上げてみました。
前にコンフリクトが起きて、解消してるはずなんだけどMergeボタンが押せなかった現象が起きた事があったので、頭に入れとくといいかもしれません。(別のプルリクを作るという形でもいい気がしてきました)

僕は事前に解消して、リリース前にあたふたしたくないので、案1か案2をオススメします。