Git 中的 clean 清除未跟踪文件
FreeGuideOnline
最新
2026-07-07
bash git clean -n
或者
git clean --dry-run
`-n` 参数代表“演习”(dry run),Git 会列出所有将被删除的未跟踪文件,但不会真的执行删除。这是一个无风险的检查操作。
---
## 基本删除操作
确认预览结果无误后,需要显式使用 `-f`(force)来真正执行删除。
```bash
git clean -f
该命令会删除当前目录下所有未跟踪的文件,但不会删除未跟踪的目录(这是出于安全设计,防止意外删除整个项目结构)。
同时删除未跟踪的目录
如果想连未跟踪的空目录或嵌套目录一起清除,需加上 -d 参数:
git clean -fd
-fd 组合会删除未跟踪文件和目录。-d 单独使用无效,必须配合 -f。
处理被 .gitignore 忽略的文件
默认情况下,git clean 不会删除 .gitignore 中列出的文件(即已忽略的文件)。
如果你希望把编译产物、依赖包等忽略文件也一并清理,可以使用 -x 参数。
git clean -fx
-f:强制删除普通未跟踪文件-x:同时删除被忽略(ignored)的文件
只删除被忽略的文件,保留其他未跟踪文件
如果你只想清理那些被忽略的文件(例如编译生成的 .o、.class 文件),而保留其他新创建的未跟踪脚本,可以使用 -X(大写):
git clean -fX
-X:仅删除被 Git 忽略的文件,保留未跟踪但未被忽略的文件。
交互式清理
-i 参数会开启交互模式,让你逐个确认要删除的文件或目录。
git clean -i
交互模式下会显示一个菜单,你可以选择:
1:清理未跟踪文件2:清理未跟踪目录3:清理未跟踪文件及目录4:清理所有(含被忽略的)未跟踪文件和目录5:不执行,退出
交互模式非常适合谨慎操作或只清理部分文件。
排除特定文件(例外规则)
如果大部分未跟踪文件都想删除,但需要保留个别文件,可以用 -e(--exclude)指定排除模式。
git clean -fd -e "*.env" -e "local-config.json"
这样会删除所有未跟踪文件和目录,但保留扩展名为 .env 的文件和 local-config.json。
你可以多次使用 -e 来添加多个排除规则。
查看被删除的文件列表(详细输出)
搭配 -v(verbose)会让 git clean 在执行删除时打印出每个被删条目的路径。
git clean -fdv
这种方式可以让你事后核对到底删除了哪些内容,便于回溯。
常见使用场景与组合
1. 安全预览所有将删内容(包括目录和被忽略文件)
git clean -ndx
2. 彻底清空所有未被 Git 管理的文件(包括目录和被忽略文件)
git clean -fdx
⚠️ 极度危险:此操作会删除所有未跟踪和忽略的文件与目录,让工作区完全恢复到纯 Git 记录状态。执行前务必确认。
3. 清理但保留特定文件(例如保留配置文件)
git clean -fd -e "config.ini"
4. 只清理被忽略的编译产物
git clean -fXd