LoginSignup
2
2

More than 5 years have passed since last update.

git rebaseの例

Last updated at Posted at 2014-09-01

git rebaseは難しいねーっていう話をたまにするので、実際の例を書いてみる。コンフリクトしたので自明ではない例だと思ったけど、そうでもないかも。

rebaseの手順

.scssファイルを編集したPRがあって、いつのまにかマージできなくなっていたのでgit rebase masterしたらうまくいかなかった。

こんな感じにコンフリクトした。

dashboard_scss_-_ubiregi-server_-____src_ubiregi-server_.png

見るからに両方とも残して良さそうだけど、念のためdiffを確認する。

notificationの画像配置_·_91e7b26_·_maki-tamura_ubiregi-server.png

このコミットはmargin-rightの指定を追加する物なので、HEADに入っていたimgの指定と両方残すのが正しい。

dashboard_scss_-_ubiregi-server_-____src_ubiregi-server_.png

この状態にして--continueする。すると、またマージに失敗する。

dashboard_scss_-_ubiregi-server_-____src_ubiregi-server_.png

念のためdiffを確認してみよう。

notificationの画像配置(再)_·_d022cbd_·_maki-tamura_ubiregi-server.png

このコミットではmargin-rightmarginで書き換えているので、margin-rightを消せば良い。

さらに--continueすると、もう一回似たような感じでコンフリクトする。

dashboard_scss_-_ubiregi-server_-____src_ubiregi-server_.png

これもmargin17pxにするほうを残す。

最終的に、最初のdiffと違い見比べて、imgが増えただけでmarginの指定が同じになっていることを確認する。

まとめ

  • 衝突した部分を見比べるだけで変更が推測できるので、これは簡単な例だった
  • marginを何度も編集している部分を一つにまとめたい (git rebase -i)
  • 何度も同じことを繰り返した気がするけど、もしかしてgit-rerereすると幸せになれる?

git rebase難しい問題

git push -fするまではいくらでもやり直しができるので、上手くいくまで3回くらいやってみれば良いと思った。あと、他人のPRをrebaseすると、自分で書いたものと違って最終形態が自明でないので、むしろ何をすれば良いかわかりやすいかもしれない(壊れたときに取り返しがつかないかもだけど)。

2
2
0

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
2
2