首页/开发/Git 与协作速查/git rm 删除文件并记录
Git 基础与命令88 条

git rm 删除文件并记录

删除文件并暂存删除动作;--cached 只把文件移出版本库、保留磁盘内容,适合把误提交文件停止跟踪。

Git 与协作速查开发更新于 2026-10-13

git rm 是什么

git rm 删除文件并把这次删除记录到暂存区,等于「在磁盘上删掉文件」加「git add 记录删除」两步合一。它只影响工作区与暂存区,要真正生效还需要提交。加 --cached 则是另一层意思:只把文件从版本库的跟踪清单里移出去,磁盘上的文件保留。

常见用途是停止跟踪

最常用的场景其实不是删文件,而是让某个已经被提交过的文件停止跟踪:把不小心提交的配置或日志用 git rm --cached 移出索引,再补进 .gitignore,从此它不再出现在改动清单里,而本地文件安然无恙。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git rm [选项] <文件>…
-r递归删除目录
--cached只移出版本库跟踪,保留磁盘文件
-f强制删除,用于已修改或已暂存的文件
等价操作删除文件之后执行 git add -u 记录

典型使用场景

  • 删除废弃文件:代码文件、临时脚本、旧文档
  • 清理目录:用 -r 删除整个子目录
  • 停止跟踪:把误提交的日志或密钥移出跟踪但保留本地文件
  • 重构整理:删除旧模块并让这次删除进入提交
  • 批量清理:配合通配符处理一批废弃文件

常用示例

常用示例
git rm old.txt              # 删除文件并暂存该删除
git rm -r legacy/           # 递归删除目录
git rm --cached .env        # 停止跟踪,保留本地文件
git rm -f build.log         # 强制删除
git rm -n '*.tmp'           # 演练:只列出会被删除的文件
git status --short          # 核对删除是否已进入暂存区

用途对照

写法磁盘文件版本库跟踪
git rm <文件>删除记录删除
git rm --cached <文件>保留移出跟踪
git rm -r <目录>递归删除记录删除
git rm -f <文件>强制删除记录删除
git rm 等价于先删除文件再执行 git add 记录删除;用文件管理器删掉文件后执行 git add -u 也能达到同样效果。
--cached 之后要把文件写进 .gitignore,否则下次 git add -A 又会把它加回跟踪,问题只是被推迟了一次,下次可能混进正式提交。
记录下来的删除同样在暂存区里,可以和其他改动一起提交,也可以用 git restore --staged 把这次删除从暂存区撤回,文件内容重新回到未暂存状态。

易错点

  • --cached 之后要把文件写进 .gitignore,否则下次 git add -A 又会被加回跟踪
  • 文件在工作区有未提交修改时 rm 会拒绝,确认无需保留再使用 -f 强制删除
  • 删除已经提交过的文件只能让它在后续提交中消失,历史里的内容仍然保留
  • 在错误的路径上执行 -r 删除会连带删掉整个目录,先用 -n 演练确认清单

数据来源与参考

  • Git 官方文档:git-rm
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌