2013-01-23 125 views
14

恢復分段但未提交的文件在本地計算機上,我從文件夾中刪除文件。'git rm -rf'

git init 
git add --all 

然後我寫了(不要問我,爲什麼!:))

git rm -rf 

我不承諾,但。現在我的項目中有空文件夾。在.git文件夾中有objects與53 Mb的文件。

如何恢復我的文件?我嘗試過Drill Disc和Stellar等程序,但沒有找到我的文件。而且我不能從GIT回滾。

如何恢復丟失的文件?

+0

如果你沒有使用任何「反刪除」工具將它們還原,它們就會消失。 – Sven

+2

http://stackoverflow.com/questions/5788037/recover-from-git-reset-hard/6780036#6780036這可能是有用的 – pktangyue

回答

10

(更新)使用git fsck相反,它是用於檢索您曾經加入到git倉庫文件內置命令。

git fsck --lost-found --unreachable 

命令處理後,檢索的文件將被放置在.git/lost-found/other,具有SHA256散列的文件名。雖然原來的名字仍然丟失,但內容將會回來。


你可以在你的.git/objects目錄中找到你的文件。

假設有一個.git/objects/2f/ae996f8f8f9298b41ba4fdbac3d62014f9579e對象,您可以執行

git cat-file -p 2fae996 

讓你丟失的文件的內容。

但是,我很抱歉,我不知道重建您的目錄或自動執行此操作。

+0

+1:哇,的確如此。奇怪的是,在那裏的文件,但不能以任何方式使用正常的git命令訪問。 –

+0

我不擔心目錄,但我需要文件。 「git cat-file」 - 這就像* nix中的「cat」命令? 如何將文件保存在其他目錄中? – user2003024

+0

您可以像通常的unix命令一樣通過重定向來保存它。 'git cat-file object>/path/to/where/you/want/save/it',但我認爲這不是一個好主意,因爲沒有關於文件名的信息。 – dyng

1

你嘗試過:

git reset --hard 

。希望工程:)

+0

經過'git rm -rf',你甚至可以安全地進行硬重置。 – Flavius

+1

-1:只有在使用了'rm -rf'的情況下才會有效。請參閱[我的回答](http://stackoverflow.com/a/14475121/572644)以獲取解釋。 –

+1

該命令將代碼更改爲上次提交併刪除所有已修改的文件。 –