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