Git Clean 常用用法

git clean 是一个用于从工作目录中移除未跟踪文件(untracked files)的命令。它非常有用,特别是在构建项目后清理生成的临时文件、日志或编译产物时。

⚠️ 重要警告:git clean 执行的操作是不可逆的。被删除的文件不会进入回收站,也无法通过 git reset 恢复。在执行实际删除前,务必先使用"干跑"模式预览。


核心参数说明

参数 全称 作用
-n --dry-run 显示哪些文件会被删除,但不实际执行删除。强烈建议删除之前执行。
-f --force 强制删除。Git 默认要求必须加 -f 才能执行真正的删除操作,以防止误删。
-d --directories 同时删除未跟踪的目录。默认情况下 git clean 只删除文件,不删除文件夹。
-x 删除所有未跟踪文件,包括被 .gitignore 忽略的文件。
-X 仅删除被 .gitignore 忽略的文件,保留其他未跟踪但未被忽略的文件。

常用场景与命令

场景一:预览将要删除的文件

在执行任何清理操作前,先看看会发生什么。

bash 复制代码
git clean -n

如果包含子目录,建议加上 -d

bash 复制代码
git clean -nd

场景二:删除当前目录下所有未跟踪的文件

这是最常用的清理命令,用于移除新建但未 git add 的文件。

bash 复制代码
git clean -f

场景三:删除未跟踪的文件和目录

当项目中生成了新的文件夹(如构建输出目录 dist/build/ 等且未被 git 跟踪时),需要加上 -d

bash 复制代码
git clean -fd

场景四:彻底清理(包括被 .gitignore 忽略的文件)

如果你修改了 .gitignore 规则,或者想清理掉所有编译生成的、被忽略的临时文件(如 *.o, *.pyc, node_modules/ 等),使用 -x

bash 复制代码
预览
git clean -nxd

执行
git clean -fxd

💡 注意:-x 会删除 .gitignore 中指定的文件,请谨慎使用,确保你不需要这些被忽略的配置或本地依赖。

场景五:仅清理被 .gitignore 忽略的文件

如果你想保留新创建但尚未加入版本控制的重要文件,只清理那些本该被忽略的垃圾文件,使用 -X(大写)。

bash 复制代码
预览
git clean -nXd

执行
git clean -fXd

交互式清理(推荐新手使用)

使用 -i 参数可以进入交互模式,Git 会列出文件并让你逐个选择是否删除。

bash 复制代码
git clean -i

在交互模式中,你可以输入:

  • clean:开始清理
  • filter:过滤文件列表
  • select:选择特定文件
  • ask:对每个文件询问
  • quit:退出

实践总结

  1. 永远先预览:养成习惯,先运行 git clean -nfd 确认列表无误。
  2. 区分 -x-X
    • -x(小写):删所有未跟踪的(含 ignore 的)。
    • -X(大写):只删 ignore 的。
  3. 结合 .gitignore:良好的 .gitignore 配置可以减少手动清理的需求。
  4. 替代方案:如果只是想让工作区回到上次 commit 的状态,且不想丢失未跟踪文件,可以考虑 git stash --include-untracked 先暂存,再决定如何处理。

常见组合速查表

目的 命令
查看将删除什么 git clean -n
查看将删除什么(含目录) git clean -nd
删除未跟踪文件 git clean -f
删除未跟踪文件和目录 git clean -fd
删除所有未跟踪文件(含 ignore) git clean -fxd
仅删除被 ignore 的文件 git clean -fXd
交互式清理 git clean -i
相关推荐
小芒果_0142 分钟前
git常用命令速查
大数据·git·elasticsearch
2501_930472442 小时前
腾讯云助手规范化Git提交记录
git·elasticsearch·腾讯云
风尘小子13 小时前
git的.gitignore文件中文件和目录配置
git
Tanner_SL18 小时前
Linux笔记之GIT常用命令
linux·git
醉颜凉1 天前
Jenkins与Git集成完全指南:从基础配置到自动触发构建
运维·git·jenkins
樱花落木兰1 天前
Git 超全零基础教程|三区原理、全套命令、分支协作、冲突解决、IDEA 集成(面试必备)
ide·git·json·github
云和数据.ChenGuang1 天前
git revert回退问题
java·服务器·人工智能·git·fastapi·强化学习
伞伞悦读1 天前
【第12期】Windows 开发环境备份与恢复:软件、环境变量、Git、conda 和 Docker 卷完整方案
git·docker·conda
吨吨ai1 天前
Codex 实战:用 Git 分支 + pytest 构建可回滚的 AI 开发流程(2026年8月27日)
人工智能·git·pytest
秋风点枝1 天前
第一篇:认识 Argo CD —— 从传统发布到云原生 GitOps
git·云原生·argocd