Git意外删除了我的所有更改

Don*_*n P 6 git

我用git做了 git rm -r .

这是愚蠢的,因为它显然删除了我工作目录中的所有文件.其中许多文件都有未提交的更改.我过去一周很傻,也没有做任何事情.

我该怎么撤消这个?我想要恢复我工作目录中的所有更改,而不是最后一次检查git.

当我运行时git status,它显示大约200个已删除的文件.其中许多都在我希望保留的工作目录中进行了更改.我怎样才能做到这一点?

Eev*_*vee 12

你不能.Git删除了文件.他们走了.您可以使用某些文件恢复工具取消删除它们,但这远远超出了git的范围.

不经常提交sorta会破坏使用VCS的目的.


编辑:我把它拿回来!Git很棒,可能会为你的文件做一个blob(我假设是为了检查新鲜度git-status).

该线程建议git fsck --lost-found用于查找尚未成为存储库一部分的git对象.它会把一堆文件转储成.git/lost-found/other; 幸运的是,有些人将是你的工作.(这是一种更容易实现同样的方法git prune -n,如下所述和本答案中所述.)

  • 无处.它们只是硬盘上的松散位.如果你打算尝试磁盘恢复软件,你需要在覆盖它们之前停止写入驱动器**现在**,但老实说,你可能最好还是尝试重新创建你的工作,而它仍然是新鲜的. (3认同)

Mar*_*ler 5

好的是,在git它不会丢失.

尝试git reset HEAD还原索引中的更改,然后git checkout .从HEAD中检出文件


如果你还没有提交它们,另一种方法是执行git prune -n和搜索blob数字.然后,您可以使用它来恢复它们git cat-file -p <blob-hash #>,请参阅git cat-file

  • `git reset --hard`用于删除你的工作目录,而不是恢复它 (2认同)