本件を実行する前に git clone でバックアップを取っておきましょう
あらかじめ、全commitの履歴を cherry-pick するスクリプトを作成しておく
git log --pretty="format:%H" | gawk '/./{ line[i++]=$0 } END{ while(--i >= 0){ print "git cherry-pick ",line[i]} }' > pick.sh
これを実行すると、pick.sh が作成される
git cherry-pick ae733b6a64bba949af88276ade162b551d7ced1d git cherry-pick b7e8e845b979bf60a94520692ce627f471d3a356 git cherry-pick 0bc25ff7d5a7fff24b898373aa5c2dbe8fa0a557 git cherry-pick edeb710e551c12ded01968d766856e3dd6fdc279 :(略)
最初のcommitの直後に移動する。
git checkout ae733b6a64bba949af88276ade162b551d7ced1d
この状態で新ブランチtmpを作成する
git branch tmp git checkout tmp
新ブランチ tmp には最初のcommitだけが残っているので、これを削除する。
git update-ref -d HEAD git reset --hard
空ブランチを作成する。
git commit -m "null" --allow-empty
他の commit を全部復元する
sh pick.sh | more
master
ブランチと、新ブランチtmp
と入れ替える
git branch -m master old_master git branch -m tmp master
Ok.