LoginSignup
91

More than 5 years have passed since last update.

git rebase --onto を使って、まずは自分だけ幸せになる

Last updated at Posted at 2015-12-02

git rebase --onto とは?

  • 指定したコミットに、あるブランチの指定した範囲をつなげるコマンド
                    G - H - I(target-branch)
                   /
          D - E - F
         /
A - B - C (このコミットの後ろに GHI を繋げたい!)

のような形になっている時に、
git rebase --onto C F target-branch と実行すると、

          D - E - F
         /
A - B - C - G' - H' - I'(target-branch)

のような形になるようにブランチを操作してくれるコマンド

どんな場面で使えるの?(個人的な感想です)

  1. テストの経験が浅いが、単体テストを導入したい
  2. 自分の開発用ブランチに続けてテスト用のブランチを作成し、まずは自分の環境でだけテストできるようにした
  3. (自分でも手探りなところがあるため)共有されているリポジトリにはテスト用のコミットはpushできない
  4. 諸事情でdevelopブランチがmasterにmergeできなくなったときや、developブランチでの検証が終わったので、unit-testブランチをmasterブランチの後ろに持って行きたい

というようなケースで便利に使えます。具体的すぎる気もしますが、似たようなケースはたくさんあるのではないかと思います。

2が完了した状態
                    G - H - I(unit-test)
                   /
          D - E - F (develop)
         /
A - B - C (master)

このような形で、なんとなくunit-testブランチでのテストはうまく行ったけど、まだmasterにpushできるほどではない、という時に、「せっかく作ったunit-testブランチを、再利用可能な形で残しておきたい!」と大半の人が思うことかと思います。
そのようなときこそ、git rebase --onto の出番です!
unit-testブランチをmasterブランチの後ろにもっていきましょう。

# unit-test ブランチで、
git rebase --onto master develop unit-test
のコマンドを実行した状態

          D - E - F (develop)
         /         
A - B - C - (master) - G' - H' - I'(unit-test)

unit-testブランチが、masterブランチの後ろにくっつきました。やったー!
最初の例と同じ形になりました!

(もし、引き続きdevelop2の開発が始まりまって、そこでもunit-testブランチの検証がしたいと思った時には、unit-testブランチ上で普通に、git rebase develop2 を実行すればOKです!
なれてきたら、最初の
git rebase --onto master develop unit-test実行時に、
git rebase --onto develop2 develop unit-test と実行しても大丈夫です!)

まとめ

  • git rebase --onto を使うとブランチを自由に移動させられる
  • 新しい技術や手法の検証のために、git rebase --ontoを使うことができる
  • ローカル環境で色々試しやすくなって幸せになれる
  • ある程度検証が終わったら、masterにマージしてチーム全体が幸せになれる

注意点

上記のような使い方で、git rebase --onto が必要なブランチを大量に作っていると、大量にコンフリクトが発生してrebase作業だけで半日たっていた!等、本末転倒なことが起こる可能性がありますのでご注意ください!

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
91