2012-09-15 24 views
5

我是git的新手,我犯了一個愚蠢的錯誤,我用「rm *」命令刪除了一些重要的文件。但是,我確實使用「git add」來添加這些文件,但不提交。刪除還沒有添加。那麼有什麼辦法可以恢復這些被刪除的文件。可以刪除在Git中添加但未提交的文件嗎?

任何建議或答案,將不勝感激。謝謝。

回答

7

由於文件已經在您的臨時區域(索引)中,只需使用git commit提交它們而沒有任何參數。這將提交索引的內容,而不管工作樹的當前狀態如何。

然後,您可以使用git reset --hard(如果您沒有對要保留的樹進行其他更改)或git checkout FILE1 FILE2...將丟失的文件恢復到工作樹中。

+0

哦,我甚至沒有注意到海報上說「刪除沒有添加」。 –

+0

非常感謝,它的工作。 – user1672893

4

您可以使用git fsck --lost-found查找所有不再被引用的對象。您需要查看「blob」對象並查看它們中的任何一個是否與您刪除的文件相匹配。希望你沒有太多沒有理由的對象。


由於user4815162342指出,海報居然說缺失還沒有被添加,這意味着它們可以與git checkout進行檢索,或者乾脆承諾,現在,以確保他們不要走。

我要離開我的答案,以防其他人想要git fsck --lost-found上的信息,但應該接受user4815162342的答案。

+0

嗨,謝謝你的迴應。我跑的命令,看見晃來晃去斑點像這樣的列表,然後我怎麼被刪除的文件回來?晃來晃去的blob 029530a4ebc7dec791a58cb022e18d0d87c8fe04 晃來晃去的blob 0c871fff49c4a05ff4a49b6a910f3bc4b688e338 晃來晃去的blob 0c08f1e149bfa9e84e9e30867c931423267b91c7 – user1672893

+1

'混帳的fsck --lost-found'寫入所有懸掛對象到'.git/lost-found/commit /'或'.git/lost-found/other /'文件夾中。查看'other'文件夾並嘗試找到那些包含你刪除內容的文件。名稱將是SHA1哈希值,但內容將是實際文件。 –

+0

你也可以通過'git cat-file -p SHA1'打印單個物體。 –

相關問題