在使用Git的過程中,有時(shí)可能會有一些誤操作

比如:執(zhí)行checkout -f 或 reset -hard 或 branch -d刪除一個分支

結(jié)果造成本地(遠(yuǎn)程)的分支或某些commit丟失

這時(shí),我們可以通過reflog來進(jìn)行恢復(fù),前提是丟失的分支或commit信息沒有被git gc清除

一般情況下,gc對那些無用的object會保留很長時(shí)間后才清除的

reflog是git提供的一個內(nèi)部工具,用于記錄對git倉庫進(jìn)行的各種操作

可以使用git reflog show或git log -g命令來看到所有的操作日志

 

恢復(fù)的過程很簡單:

1. 通過git log -g命令來找到我們需要恢復(fù)的信息對應(yīng)的commitid,可以通過提交的時(shí)間和日期來辨別

2. 通過git branch recover_branch commitid 來建立一個新的分支

這樣,我們就把丟失的東西給恢復(fù)到了recover_branch分支上了