yashigani?.days

週刊少年ジャンプについてだらだら書きます

ブランチをつけかえるrebase --ontoが便利

普段gitを使っていると,カジュアルにブランチを切りまくって開発を進めることになりますが,ブランチを切るべき元ブランチを間違った経験はないでしょうか?例えば以下のようなコミットログになる場合です.

* hotfix
|
*
|
* develop
|
*
|
* release
|

新バージョンのリリース後,順調に開発を続けていましたがユーザからのフィードバックでリリースバージョンにバグがあることが判明することはよくあります. そういう場合,時期バージョンの前にメンテナンスバージョンをリリースすることになるので,バグを修正するブランチを作成します.しかし,hotfixreleaseから派生すべきブランチですが,今日は眠かったので間違ってdevelopブランチから派生させてしまいました.

これは困った.目的としていたのは以下です.

* hotfix
|
| * develop
| |
| *
| /
* release
|

このhotfixreleaseにつけかえるには色々手段が考えられますが,rebase --ontoを使うと便利です.

git rebase --onto release develop hotfix

これによって,hotfixreleaseから派生したブランチに変更され,develop-hotfix間にあるコミットが適用されます.

rebase --ontoを知るまで,こういう場合がんばってresetしてはstashしてコミットを目的のブランチに移動していました.これからはそんな泥くさいことをする必要はなさそうです.

入門Git

入門Git