2013年04月11日(木) [長年日記]
■ [dev][howto] git logでは見えないコミットをgit reflogで表示
gitのコミットログを変更するのに、誤って
% git commit -a --amend
と -a を付けてしまったため、コミットしたくないワークツリーの変更が混ざってコミットされてしまった。
--3 / 0---1---2
コミット実行前の状態(2)に戻したいが、HEADが3を指していると git log は 3, 1, 0 しか表示しないので2のコミットの名前が分からない。
こういうときは、reflogに頼ればいいようだ。gitはHEADの移動を記録していて、「git reflog」や「git log -g」を使うとHEAD移動の記録が表示される。これだと 2 のコミットも表示されるので、
% git reset 2の名前
とすることでコミット前の状態に戻れた。