如何撤销git rm操作?仅恢复指定文件且不改动其他内容
撤销
git rm somefile的方法,精准恢复目标文件 别慌,撤销git rm somefile完全可以做到,而且能精准恢复目标文件,不会影响其他内容。分两种常见场景来处理:
情况1:执行git rm后还没提交代码
如果只是刚执行了删除命令,还没做git commit,直接用下面的命令就能快速恢复:
- Git 2.23及以上版本(推荐用这个):
这条命令会把文件从暂存区恢复到工作区,其他已修改的文件完全不受影响。git restore somefile - 如果你用的是比较老的Git版本(2.23之前),可以用:
这里的git checkout -- somefile--是为了避免和分支名混淆,确保Git知道你要操作的是某个文件。
情况2:已经提交了git rm的删除操作
要是你已经把删除操作提交到仓库了,就得从历史提交里找回文件:
- 先找到删除文件之前的那个提交记录,用这条命令查看简洁版的提交日志:
找到删除操作前的那条提交的哈希值(比如git log --onelinea1b2c3)。 - 然后用下面的命令恢复文件:
- 新版本Git:
git restore a1b2c3 -- somefile - 老版本Git:
git checkout a1b2c3 -- somefile
somefile恢复到当前工作区,其他文件的修改或状态都不会被改动。 - 新版本Git:
小提示
如果是用git rm -r删除了整个目录,操作逻辑和单个文件完全一致,把命令里的文件名换成目录名就行。
内容的提问来源于stack exchange,提问作者Ole
相关产品推荐
相关产品推荐

