git reflog
可以查看所有分支的所有操作記錄(包括(包括commit和reset的操作),包括已經被刪除的commit記錄,git log則不能察看已經刪除了的commit記錄
具體一個例子,假設有三個commit, git st:
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
如果執行git reset --hard HEAD~1則 刪除了commit3,如果發現刪除錯誤了,需要恢復commit3,這個時候就要使用git reflog
HEAD@{0}: HEAD~1: updating HEAD
63ee781 HEAD@{1}: commit: test3:q
紅色加粗的即是被刪除了的 commit3,運行git log則沒有這一行記錄
可以使用git reset --hard 63ee781將紅色記錄刪除,則恢復了cmmit3,運行git log后可以看到:
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
這里也可以使用另外一種方法來實現:git cherry-pick 63ee78