在 git 我做了git rm -r .
这很愚蠢,因为显然它删除了我工作目录中的所有文件。其中许多文件具有尚未提交的更改。我很愚蠢,在过去的一周里什么都没做。
我该如何撤消此操作?我想取回我工作目录中的所有更改,而不是最后一次签入 git。
当我运行时git status
,它显示大约 200 个文件已被删除。其中许多在我想保留的工作目录中有更改。我怎样才能做到这一点?
在 git 我做了git rm -r .
这很愚蠢,因为显然它删除了我工作目录中的所有文件。其中许多文件具有尚未提交的更改。我很愚蠢,在过去的一周里什么都没做。
我该如何撤消此操作?我想取回我工作目录中的所有更改,而不是最后一次签入 git。
当我运行时git status
,它显示大约 200 个文件已被删除。其中许多在我想保留的工作目录中有更改。我怎样才能做到这一点?
你不能。Git删除了这些文件。他们走了。您也许可以使用一些文件恢复工具取消删除它们,但这远远超出了 git 的范围。
不经常提交有点违背了使用 VCS 的目的。
编辑:我收回它!Git 非常棒,可能已经为你的文件创建了一个 blob(我假设是为了检查新鲜度git-status
)。
该线程建议使用git fsck --lost-found
来查找尚未成为存储库一部分的 git 对象。它会将一堆文件转储到.git/lost-found/other
; 运气好的话,有些会是你的工作。(这是一种更简单的方法来完成与下面和此答案git prune -n
中提到的相同的事情。)
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