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