git rm
文章目录
- 1. 简介
- 2. 格式
- 3. 选项
- 4. 示例
- 4.1 删除单个文件
- 4.2 递归删除目录
- 4.3 仅从仓库删除,保留工作区文件
- 4.4 强制删除(忽略本地修改)
- 4.5 批量删除特定类型文件
- 4.6 模拟执行(查看将要删除的文件)
- 5. 其他
- 5.1 `git rm` vs 普通 `rm` 的区别
- 5.2 误删除后如何恢复
- 5.3 常用别名设置
- 6. 小结
- 参考文献
1. 简介
git rm命令用于从 Git 仓库和工作区中同时删除文件。它会将删除操作记录下来,等待下一次提交。
与直接使用rm命令删除文件不同,git rm会同时更新暂存区,省去了git add的步骤。
注意,git rm无法删除未受版本控制的文件(untracked file)。
2. 格式
gitrm[<options>][--][<pathspec>…]3. 选项
-f,--force强制删除(即使文件有本地修改)-r递归删除目录及其内容--cached仅从暂存区和版本库中删除,保留工作区文件。可用于文件脱离版本控制 -n, --dry-run 模拟执行,显示哪些文件会被删除,但不实际删除 --ignore-unmatch 如果匹配不到文件也不报错 -q,--quiet静默模式,不输出删除信息4. 示例
4.1 删除单个文件
# 删除 README.mdgitrmREADME.md4.2 递归删除目录
# 删除 utils 目录及其所有内容gitrm-rutils/4.3 仅从仓库删除,保留工作区文件
# 删除版本库中的 config.env,但保留本地文件(常用于误提交的配置文件)gitrm--cachedconfig.env4.4 强制删除(忽略本地修改)
# 文件有本地修改但仍要删除gitrm-fmain.go4.5 批量删除特定类型文件
# 删除所有 .log 文件gitrm*.log# 递归删除所有 .tmp 文件# \*.tmp 解释为字面量 *.tmp 传递给 git rm。# Git 收到参数 *.tmp 后,会自己进行通配符匹配,在索引(暂存区)中查找所有 .tmp 文件并删除。gitrm\*.tmp--cached4.6 模拟执行(查看将要删除的文件)
# 预览哪些文件会被删除gitrm--dry-run *.log5. 其他
5.1git rmvs 普通rm的区别
| 操作 | 工作区 | 暂存区 | 是否需要git add |
|---|---|---|---|
rm file | 删除 | 仍存在(显示 deleted) | ✅ 需要git add才能提交删除 |
git rm file | 删除 | 已删除 | ❌ 直接git commit即可 |
5.2 误删除后如何恢复
# 误执行 git rm 后,可以从 HEAD 恢复gitreset HEADfilegitcheckout --file# 或者使用 restore(Git 2.23+)gitrestore--source=HEADfile5.3 常用别名设置
gitconfig--globalalias.rmc"rm --cached"gitconfig--globalalias.rmr"rm -r"# 使用别名gitrmc config.envgitrmr old-module/6. 小结
| 需求 | 命令 | 说明 |
|---|---|---|
| 删除文件(工作区+仓库) | git rm file | 同时删除,直接提交 |
| 递归删除目录 | git rm -r dir/ | 删除目录及其所有内容 |
| 只删仓库,保留工作区 | git rm --cached file | 适用于误提交的配置文件 |
| 强制删除 | git rm -f file | 忽略本地修改,强制删除 |
| 预览删除 | git rm --dry-run file | 模拟执行,不实际删除 |
一句话总结:
git rm是 Git 中的删除命令,它会同时更新工作区和暂存区。需要保留本地文件时用--cached;误删除后可从 HEAD 恢复。养成删除前用--dry-run预览的习惯,避免意外删除。
参考文献
Git - git-rm Documentation
