branch切るのを忘れてcommitしていたときの対処
branch切るのを忘れて、develop上で開発してしまったが、別branchに分けてからPRを出したい状況を考える
code:git
// これを
... - A - B - C - D (develop)
// こうしたい
... - A (deveolp)
|
+ - B - C - D (ft-mrsekut-hoge)
A~Dはcommit hashを表す
手順
HEADがDの状態で
$ git checkout -b ft-mrsekut-hoge
これで新しい方のbranchは完成
developのbranchをキレイにする
$ git checkout develop
$ git reset --hard @~3
develop以外でbranch切り忘れた場合はcherry-pick必要
本当は、developからhoge-2を切るべきだったが、
忘れていて別のものを開発中のhoge-1に追加してしまっていた、という状況
code:git
// これを
... - A (develop)
|
+ - B - C - D - E - F (hoge-1)
// こうしたい
... - A (develop)
| |
| + - B - C (hoge-1)
|
+ - D - E - F (hoge-2)
手順
Aのcommitへ移動し、新しいbranchを切る
$ git checkout A
$ git checkout -b hoge-2
$ git cherry-pick D~..F
これで新しい方のbranchは完成
元のbranchをきれいにする
$ git checkout hoge-1
$ git reset --hard @~3
D,E,Fの3つ分を消す