How do I restore files that were deleted accidentally with `git rm .`?
我刚刚做了一个舞台:
1 | git add . |
当我想重置时,我使用:
1 | git rm . |
突然所有文件都被删除了!!我想应该只是删除了正在工作的树,它的行为就跟我一样:
1 | rm -rf ./* |
为什么要删除所有文件?我应该用什么命令来代替呢?
修复删除内容
当您从索引和工作树中删除文件时,Git会注意到您在当前提交中拥有的文件现在已不存在,因此
不过,没必要惊慌。这只是Git告诉您的方式,与以前的提交相比,它看到那些文件消失了。这些文件仍然存在于回购协议中。事实上,如果您现在准备好所有的删除并提交,那么您只需要一个没有文件的新提交,但是您当前的提交仍然存在于repo中的所有文件中。您可以随时将其签出,它会将这些文件恢复到工作目录中。
有关如何从
Note: Be careful with:
1 git reset --hardThis will work in this case (per the other answers), but be a little careful with it - understand that while it will restore all files to the last (current) commit, that means you will lose all changes both in the index and the working directory. In this case, you really do want to restore all files (since the
git rm . deleted all of them), so that's not a problem.You can restore individual files to last commit status with
1 git reset --hard [filename]
如何以后只从索引中删除文件
关于如何从阶段区域删除文件,我更喜欢使用Git扩展,这是一个流行的开源GitGUI工具。当您点击"提交"按钮时,它会打开一个提交窗口,显示所有已暂存和未暂存的文件以及任何更改,让我们单击其中的任何一个并查看更改的差异,并有按钮在工作目录和索引之间移动它们。
但如果需要命令行选项,则可以使用以下命令:
1 git reset
将从索引中删除所有文件/更改(注意:没有句点!!!)此外,您还可以使用:
1 git reset [filename]
仅取消对[文件名]的存储(或文件名模式,如*.txt)。
这与使用
如果您使用
如果您使用
如果你想重新设置你的添加,你可以这样做
1 | git reset --hard |
这将使您在执行
尝试重置为最后一次提交,方法是: