You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git rm命令作用范围疑问:是否仅删除工作区与暂存区文件

Git rm 命令的作用范围解析

你的理解完全正确:git rm仅会删除工作区和暂存区的文件,不会直接删除本地仓库(提交历史)中的文件。

具体细节拆解:

  • 执行git rm Test.txt时,Git会同步完成两个操作:移除本地工作区的Test.txt文件,同时将这个删除操作纳入暂存区,所以git status会显示该文件处于待提交的删除状态,ls命令也找不到该文件。
  • git ls-tree --full-tree -r --name-only HEAD查看的是当前HEAD指向的最新提交内容——也就是你之前git commit -m "1st commit"生成的提交,这个提交里依然保留着Test.txt的记录,因为你还没把这次删除操作提交到仓库。

当你执行git commit -m "delete Test.txt"后,新的提交会记录文件被删除的状态,此时再用git ls-tree查看新的HEAD,就看不到Test.txt了。不过需要注意:旧提交里的Test.txt历史记录依然存在,Git不会主动清理提交历史中的文件内容,除非使用git filter-repo这类专门重写历史的工具。

内容的提问来源于stack exchange,提问作者Harsha G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:40:54