git でコミットの整理
master ブランチで直接色々と変更してしまった状態。
master に対する変更をいくつかの塊に分けて、それぞれを 1 コミットにまとめたい。
注:この方法は正しくないかもしれないし、もっと簡単な方法があるかもしれない。
塊のブランチを作成
まず、基底とするコミット (C0) へ戻る
git checkout C0
塊のブランチ (B0) を作成して、塊にしたいコミットを master からひっぱってくる。
git checkout -b B0 git cherry-pick C1 git cherry-pick C2 git cherry-pick C5
C1 〜 C5 のコミットをまとめる。
git rebase -i HEAD^4
pick C0 pick C1 pick C2 pick C5
を
pick C0 pick C1 squash C2 squash C5
とする。
エディタが起動するので、新しいコミットメッセージを入力。
同様に好きなだけ塊のブランチを作成。
master にコミットしていく。
master の HEAD を基底のコミットにする。
git reset --hard C0
塊のブランチからコミットを取り込む。
git cherry-pick B0
他
git rebase -i でおかしくなったときには慌てず騒がず git rebase --abort 。
何か間違えたら、git reflog で戻りたい操作の時点を確認して、git reset --hard HEAD@{5} など。