2017-05-23 43 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

哇。这非常有见地。我猜我必须接受我会重做一切。感谢您分享你的知识。 –