我正在尝试从现有目录推送到存储库,因此我使用
添加了所有文件git add -A
然后我意识到我不应该添加节点模块文件夹,所以我做了
git reset --hard
然后我决定一个接一个地添加文件夹,我意识到我应该首先制作.gitignore文件,所以我决定使用
删除我文件夹中的所有git关系rm -rf .git
使用
重新初始化当前文件夹后git init
当前目录中缺少太多文件。我没有任何项目备份。关于如何恢复文件的任何想法?
答案 0 :(得分:2)
如果您没有备份,并且您的操作系统没有执行"软删除" (垃圾桶,回收站,无论如何)或者你以绕过它们的方式删除,然后没有可靠的方法来恢复工作。
.git
目录包含 git知道的所有文件,而不是未跟踪文件或工作树中的更改。删除.git/
几乎从来没有必要而且非常危险,因为这个问题不幸地说明了。您使用的其他命令也比您需要的命令更具攻击性/危险性,并且您很可能在此过程中很早就丢失了工作文件。对不起,这个消息不是更好。
供将来参考:
reset --hard
很可能删除了您的工作文件。您已经完成了一些添加并希望还原它们,因此mixed
重置(这是默认设置)就足够了,并且会使您的工作树单独使用。硬重置会将工作树恢复为已提交状态(以及索引)。
重置后,您再次开始add
s。我想当你不得不第二次开始时,你担心你可能会让git累积不需要的状态。它不是。另一个mixed
重置会很好。您始终可以使用git status
来确保索引不包含任何意外内容(如果是,则将其清除)。
唯一持久的记录是数据库中的内容,因为您还没有提交任何内容,但您还没有影响数据库。即使你已经提交了你想放弃的东西,只要这些东西没有与他人分享,就会有摆脱它们的程序。
通常git非常擅长保护您的数据,但它无法保护您尚未承诺的内容;因此要求它使用对工作树具有破坏性的命令,或者对存储库和元数据进行核对(通过删除.git/
)只有在您非常确定的原因时才应该这样做你正在做它们。