用法
git reflog
顯示整個本地倉儲的commit, 包括所有branch的commit, 甚至包括已經撤銷的commit, 只要HEAD發生了變化, 就會在reflog里面看得到. git log只包括當前分支的commit.
git reflog --relative-date
顯示相對時間的commit紀錄.
討論
每一次當前HEAD發生改變(包括切換branch, pull, 添加新commit)一個新的紀錄就會被添加到reflog.
例子
運行git reflog
0a2e358 HEAD@{0}: reset: moving to HEAD~2 0254ea7 HEAD@{1}: checkout: moving from 2.2 to master c10f740 HEAD@{2}: checkout: moving from master to 2.2
上面的reflog展示了從master到2.2分支, 然后在會到master, 然后在reset到老的commit.
如果你發現上面的reset是一次意外是一個錯誤. 可以使用下面的命令反悔:
git reset --hard 0254ea7