6

在 git 我做了git rm -r .

这很愚蠢,因为显然它删除了我工作目录中的所有文件。其中许多文件具有尚未提交的更改。我很愚蠢,在过去的一周里什么都没做。

我该如何撤消此操作?我想取回我工作目录中的所有更改,而不是最后一次签入 git。

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

4

2 回答 2

13

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

不经常提交有点违背了使用 VCS 的目的。


编辑:我收回它!Git 非常棒,可能已经为你的文件创建了一个 blob(我假设是为了检查新鲜度git-status)。

该线程建议使用git fsck --lost-found来查找尚未成为存储库一部分的 git 对象。它会将一堆文件转储到.git/lost-found/other; 运气好的话,有些会是你的工作。(这是一种更简单的方法来完成与下面和此答案git prune -n中提到的相同的事情。)

于 2013-10-28T06:32:13.813 回答
5

The good thing is, in git it is not lost.

Try git reset HEAD to revert your changes in your index and then git checkout . to check out your files from HEAD


Another way if you have not commited them is to execute git prune -n and search the blob numbers. You can then restore them by using git cat-file -p <blob-hash #> , see git cat-file

于 2013-10-28T06:33:37.663 回答