Gitでコミット履歴を整理したい時に覚えておきたいコマンド(編集中)
シーン: featureブランチから更に作業ブランチを作ってた場合
上記のようにfeature/A
から枝分かれして並列で開発している時に、BのマージコミットをしたあとにC...C''
のリベースをしようとするとなかなか大変だなーと思う時がありました。
そこで
feature/AB'''
とfeature/AC''B'''
を比較してCのコミットハッシュを取得するfeature/AD
を作り、1で取得したコミットをcherry-pick
してリベースfeature/AD'
をfeature/AB'''
にマージする
とすればわりと履歴が編集しやすくなるとと思いました。
1. まず差分のハッシュリストを取得する
$ git --no-pager log --no-merges --pretty=oneline ...`git rev-parse feature/AB'''` 330a340d25477683baf0767e471b8ed28fea41a9 Fixed hoge f8ca306bb8e94a7ef899c42bc3097ba8d569e18c Fixed fuga 7f8d6461240e2b618982d39371d77dae89a206c9 Fixed barr
2. feature/AD
にcherry-pick
$ git checkout feature/A $ git checkout -b feature/AD $ git cherry-pick 330a340d25477683baf0767e471b8ed28fea41a9 $ git cherry-pick f8ca306bb8e94a7ef899c42bc3097ba8d569e18c $ git cherry-pick 7f8d6461240e2b618982d39371d77dae89a206c9 $ git rebase -i HEAD~3
3. feature/AB'''
にmerge
$ git checkout feature/A $ git pull $git merege feature/AD'
これでなんとかリベースできそう。
本当はgit-now
とかtig
を使いこなせればいいんだろうけど、まだまだ初心者であります...!