在git中我做了git rm -r .
这是愚蠢的,因为显然它删除了我工作目录中的所有文件。其中许多文件都有未提交的更改。我过去一周很傻,也没有做任何事情。
如何撤消此操作?我想要恢复我工作目录中的所有更改,而不是最后一次检查git。
当我运行git status
时,它会显示大约200个已删除的文件。其中许多都在我希望保留的工作目录中进行了更改。我怎样才能做到这一点?
答案 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