メモの日々


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の名前

とすることでコミット前の状態に戻れた。