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

时间:2013-10-28 06:29:26

标签: git

在git中我做了git rm -r .

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

如何撤消此操作?我想要恢复我工作目录中的所有更改,而不是最后一次检查git。

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

2 个答案:

答案 0 :(得分:12)

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

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


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

This thread建议使用git fsck --lost-found查找尚未成为存储库一部分的git对象。它会将一堆文件转储到.git/lost-found/other;幸运的是,有些人将是你的工作。 (这是完成与git prune -n相同的更简单的方法,如下所述和in this answer。)

答案 1 :(得分:5)

好消息是,在git中它不会丢失。

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


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