我想清除一些未提交文件的工作目錄,但是意外地跑了git reset --hard
。重置後Git commit丟失--hard。沒有被fsck發現,不在reflog
我意識到,我已經失去了以前的(未推)提交,所以我跑git reset --hard ORIG_HEAD
。這並沒有讓我失去我的承諾。
我跑git reflog
,但承諾沒有列出。我也跑了git fsck --lost-found
,但列表中沒有提交,只有幾個不相關的斑點和樹。
由於我找不到丟失的提交的任何參考(除了.git/COMMIT_EDITMSG
,它仍然有相關的提交消息和更改列表),我不知道如何去恢復提交。
有沒有辦法讓丟失的提交回來,或者我應該準備好一個全能的?
爲什麼你認爲你有一個git的承諾爲當地的變化? git reset不會丟失它。如果您只有未提交的更改,那些更改就會消失。 – fche 2013-03-18 15:15:13
沒有commit-ish參數的'git reset --hard'就相當於'git reset --hard HEAD',它不會丟失提交,推送或者不被提交。它會簡單地將您的索引和工作目錄重置爲您所做的最後一次提交的狀態,從而失去暫存和非暫存(但尚未提交)更改。 'git reset --hard ORIG_HEAD'可能會成爲一個問題,具體取決於ORIG_HEAD實際更新的最後一個命令是什麼,以及它之前多長時間,以及您在之間做了什麼... – twalberg 2013-03-18 15:42:32
謝謝,在'git reset --hard'之前大約半個小時就做出了失敗的承諾。 – 2013-03-18 15:56:15