あなたはgitリポジトリでコードを書いています。
で、コミットをするとき「このコードはさっきのコミットと一緒にした方がいいな」と思った場合どうしますか?
% git commit -a --amend -C HEAD
ですね?(HEADのコミットメッセージから変更がない場合)
では「このコードは2個前のコミットと一緒にした方がいいな」と思った場合どうしますか?一旦コミットして、あとから git-rebase
しますか?
手っ取り早く済ませるには git-stash
を使うといいでしょう。
% git stash
% git rebase -i HEAD~2
するとこんな感じの画面が表示されます。
git-rebase後に表示される画面
pick 45acd16 このコミットにいれたい
pick 45f6df0 一つ前のコミット
これを
execを挿入
pick 45acd16 このコミットにいれたい
exec git stash pop; git commit -a --amend -C HEAD
pick 45f6df0 一つ前のコミット
こんな感じに変更してエディタを閉じれば完了します。 この exec
は後続する文字列をシェルで実行しろ、という意味です。なのでやってることは実質的に
git-rebase後に表示される画面
edit 45acd16 このコミットにいれたい
pick 45f6df0 一つ前のコミット
して edit
箇所で止まってから
% git stash pop; git commit -a --amend -C HEAD
するのと同じです。ちなみに今回の場合 exec
以降を ;
で区切って二行にすると諸事情により意図した通りに動かないので注意が必要です。
これだとダメ
pick 45acd16 このコミットにいれたい
exec git stash pop
exec git commit -a --amend -C HEAD
pick 45f6df0 一つ前のコミット