Git Advent Calendar / Jun. 29日目の記事です.28日目は@uasiさんの「どこでも使える git diff と git apply」でした.
「間違ってマージしていないブランチを消した」「reset --hard HEAD^*で戻しすぎた」ということがたまにある.
しかしgit reflog
を使うと(GCされていなければ)過去のあらゆるコミット履歴を見ることができ,git logやgit branchでは辿り着けない時点まで戻すことができる.
$ git reset --hard HEAD^^ # HEAD^と指定するつもりが間違えた!
$ git reflog
f5cb888 HEAD@{0}: head^^: updating HEAD
b0b8073 HEAD@{1}: merge @{-1}: Merge made by the 'recursive' strategy.
fe3972d HEAD@{2}: checkout: moving from fix/some-bug to master
$ git reset --hard HEAD@{1} # reset --hard HEAD^^する前に戻れる
歴史を書き換え間違えたときのために覚えておくと便利!