git reflog 能夠查看全部分支的全部操做記錄(包括(包括commit和reset的操做),包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄git
具體一個例子,假設有三個commit, git st:it
commit3: add test3.cclass
commit2: add test2.ctest
commit1: add test1.c方法
若是執行git reset --hard HEAD~1則 刪除了commit3,若是發現刪除錯誤了,須要恢復commit3,這個時候就要使用git reflogdi
HEAD@{0}: HEAD~1: updating HEAD
63ee781 HEAD@{1}: commit: test3:q
紅色加粗的便是被刪除了的 commit3,運行git log則沒有這一行記錄co
能夠使用git reset --hard 63ee781將紅色記錄刪除,則恢復了cmmit3,運行git log後能夠看到:錯誤
commit3: add test3.ccommit
commit2: add test2.c分支
commit1: add test1.c
這裏也能夠使用另一種方法來實現:git cherry-pick 63ee781