2017-05-23 160 views
0

我試圖推到一個存儲庫從現有的目錄,所以我說用恢復刪除的文件夾git的

git add -A 

的所有文件,但後來我意識到,我不應該添加節點後刪除文件的git模塊文件夾,所以我做了

git reset --hard 

於是我決定添加文件夾逐一一半,我意識到,我應該先作出的.gitignore文件,所以我決定取消在所有git的關係我使用文件夾

rm -rf .git 

我後重新初始化使用

git init 

太多的文件從當前目錄中缺少當前文件夾。我沒有任何項目的備份。任何想法如何我可以恢復文件?

+0

將'.git /'從垃圾箱中取出 – Brian

+0

嗨@Brian不幸的是它不在我的回收站中。 –

+1

'git pull master origin'來抓取當前的提交。始終考慮提交任何重大更改,然後可以返回到'git log'和'git reset --hard [commit_ID]'。 –

回答

2

如果您沒有備份,並且您的操作系統不會執行「軟刪除」(垃圾桶,回收站,無論)還是以繞過它們的方式刪除,那麼沒有可靠的方法來恢復工作。

.git目錄包含有關您的文件的所有內容,除了未跟蹤的文件或工作樹中的更改外,所有的一切git都知道。刪除.git/幾乎是不必要的,非常危險,因爲這個問題不幸說明了。您使用的其他命令也比您需要的更具侵略性/危險性,而且您很可能在流程的早期就丟失了工作文件。對不起,這個消息並不好。

以供將來參考:

這是可能的reset --hard就是刪除你的工作文件。你已經做了一些添加並想恢復它們,所以mixed重置(這是默認設置)本來就足夠了,並且會讓你的工作樹單獨存在。硬重置將您的工作樹恢復到提交狀態(以及索引)。

重置之後,你又開始做add秒。我想,當你不得不重新開始時,你擔心你可能會積聚不需要的狀態。事實並非如此。另一個mixed重置會很好。您始終可以使用git status來確保索引不包含意外的任何內容(如果是這樣,請將其清除)。

唯一持久的記錄是什麼在數據庫中,因爲你沒有犯了什麼你不影響數據庫呢。即使你犯了你想丟棄的東西,只要這些東西沒有與其他人分享,那麼就有程序來擺脫它們。

一般Git是在保護你的數據非常好,但它不能保護你有沒有犯什麼;所以要求它使用的是具有破壞性向工作樹的命令,或的摧毀倉庫和元數據(通過刪除.git/)只應做,如果你是你爲什麼這樣做他們非常肯定

+0

哇。這非常有見地。我猜我必須接受我會重做一切。感謝您分享你的知識。 –