2014-09-04 197 views
0

我需要幫助,我有沒有添加到回購的文件。 我做git reset --hard HEAD

git add this.php 
git add file.php 

然後我決定我要unstage他們,所以我做了

git reset --hard HEAD 

現在,這些文件都沒有了。我怎樣才能恢復這些文件?

回答

5

幸運的是,您在將這些文件從您的工作副本中加入之前,將這些文件添加到了索引中。在這種情況下,它們已經包含在Git的對象數據庫中。 (首先創建一個備份,以防萬一你搞砸了)。

運行git fsck(可能與--full標誌)並尋找「懸掛斑點」。然後使用git show $hash來顯示斑點的內容。如果您找到您的文件(可能有幾個相似的版本),請使用git show $hash > path/to/file將它們再次寫入磁盤。

+0

哇,真是一種解脫。這工作。我在沒有--full的情況下使用fsck,因此這些文件沒有顯示出斑點。我需要學習 – Angelo 2014-09-04 16:09:36

0

硬復位後不能恢復文件而不提交它們。

你應該寧願做一個軟/混合重置,這將只是取消文件。在升級文件之後執行git status時,您可以從git中看到相同的建議。

+1

OP在調用'reset --hard'之前添加了它們,所以它們已經是Git的對象數據庫的一部分,可以用'git fsck'恢復。如果他沒有,那麼這些文件將永遠丟失。 – knittl 2014-09-04 15:58:55

+0

啊,呃。現在學會了! :-) – gravetii 2014-09-04 16:01:19

相關問題