git reflog の使い方

HEAD の動きの記録

書き方

git reflog
git reset --hard HEAD@{n}

HEAD がどこを指してきたかの記録です。reset --hard で消えたように見えるコミットも、ここから探して戻せます。

よく使うオプション

オプション意味
show ブランチそのブランチの動きの記録を見る
-n 数新しいほうから、その数だけ出す
--date=iso日時つきで出す

例

$ git reflog9c1e2f4 HEAD@{0}: reset: moving to HEAD~2
4d5e6f7 HEAD@{1}: commit: 設定を足す
1a2b3c4 HEAD@{2}: commit: ボタンを直す

HEAD がどこを指してきたかの記録を見ます。reset や rebase の前の位置も残っています。

$ git reset --hard HEAD@{5}

5 つ前の動きの時点に戻します(番号は git reflog で確かめます)。間違えて reset したコミットを取り戻せます。

$ git branch rescue 4d5e6f7

見失ったコミットに、新しいブランチの名前を付けて救い出します。

$ git reflog -n 5 --date=iso

最近の 5 つの動きを、日時つきで見ます。

よくある間違い・注意

  • reflog は手元だけの記録で、push もされません。clone し直した場所には残っていません。
  • 古い記録は、既定で 90 日ほどで消えます(どこからも辿れないものは 30 日)。

実際に打って練習する

Git コースの Lv22「失われた記録 reflog」で覚えます(第3章 時の書庫(書き換えと復旧))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜10 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

Git コマンド一覧(使い方と例)へ戻る