不慎在錯誤的目錄執行了git checkout -- .,導致最近的變更都恢復成commit時的狀態。 是否有指令可以找回遺失的變更?
git checkout -- .
光阴似箭催人老,日月如移越少年。
被添加到index 的內容可以找回(但是只有文件內容,沒有文件名信息,需要人工辨別),沒有被添加的部分已經被刪除了,你只能求助於另外的辦法(備份文件、反刪除恢復等)。
據我說知,如果沒有stage那些更改,你就不能恢復了。
如果stage(add)過,還可能可以恢復(前提是不能運行git gc): 使用 git fsck --lost-found 找到 dangling blob,然后使用 git show <sha_id> 看看這個檔案是不是你之前被恢復的。
git fsck --lost-found
dangling blob
git show <sha_id>
git reset --hard HEAD~1 就可以恢復了
git reset --hard HEAD~1
被添加到index 的內容可以找回(但是只有文件內容,沒有文件名信息,需要人工辨別),沒有被添加的部分已經被刪除了,你只能求助於另外的辦法(備份文件、反刪除恢復等)。
據我說知,如果沒有stage那些更改,你就不能恢復了。
如果stage(add)過,還可能可以恢復(前提是不能運行git gc): 使用
git fsck --lost-found
找到dangling blob
,然后使用git show <sha_id>
看看這個檔案是不是你之前被恢復的。git reset --hard HEAD~1
就可以恢復了