matobaの備忘録

和歌山と東京を往復しつつ活動するエンジニアの記録

gitで派生元を変えるrebase

gitで「派生元間違えた!」って時とか、別のブランチの修正内容が欲しいなあって時は、git rebaseの--ontoが使えることを学んだ。

そのうち同じことを考えそうな気がするので、未来の自分に説明を書いておく。

結論だけ言うと、

$ git rebase --onto t2 t1 t3

と実行すると、t2ブランチに、t1ブランチから生えているt3ブランチをrebaseできる。

詳しく経緯を書いて説明する。

最初はmasterブランチだけあるところからスタートした。

f:id:mtb_beta:20171031222338j:plain

そして、リリースブランチ「t1」を切った。

f:id:mtb_beta:20171031222625j:plain

そこから、トピックブランチ「t2」を切った。

f:id:mtb_beta:20171031222659j:plain

もう一つトピックブランチ「t3」を切った。

f:id:mtb_beta:20171031223247j:plain

それぞれで普通に開発を進めた。

f:id:mtb_beta:20171031223517j:plain

途中、「t3」で「t2」のコミットが欲しくなった。

f:id:mtb_beta:20171031223558j:plain

git rebaseして、t3ブランチをt2ブランチから生やした。

f:id:mtb_beta:20171031223620j:plain

あとは、普通に開発を進める。

f:id:mtb_beta:20171031223741j:plain

注意

ただし、rebaseしたあとは、t2を捨てると、t3も捨てることになると思う。(やったことないけど)