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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。