用 git clean -nd 先预览会删哪些临时文件

28 次浏览4 条回复

本地跑构建、测试之后,仓库里有时候会冒出一堆未跟踪文件。真要清之前,建议先让 Git 预览一下。

环境:Git 2.25+,在仓库根目录执行:

git clean -nd

-n 是 dry-run,只列出会被删除的文件,不会真的动手。确认没问题后,再考虑执行:

git clean -fd

如果连被 .gitignore 忽略的文件也想一起看,预览时可以用:

git clean -ndx

这个命令要稍微小心,尤其是 -x,很容易把本地缓存、生成物也算进去。我一般只把 -nd 当成清理前的安全确认。

还有个小习惯挺有用:如果仓库里经常有本地配置文件没进 git,可以先用 git clean -nd -e .env.local 这类方式排除一下。

当然真正执行前还是看一遍 dry-run 输出,别把临时但还想留的东西顺手清掉了。

git clean -fd 之前我还会顺手看一下 git status --short,确认哪些是未跟踪、哪些其实是改过但没暂存的文件。

另外目录可以单独清,比如只清构建目录:

git clean -nd build/

这样范围小一点,心理压力也小很多。

不太确定要不要全删的时候,也可以用交互模式先挑一下:

git clean -i

它会列出候选项,再让你选择 clean/filter/select,适合那种输出里混着几个想保留文件的情况。比直接 -fd 稍微慢点,但手滑概率低很多。

补一个容易混的点:如果只想清掉被 .gitignore 忽略的生成物,可以先预览 -X:

git clean -ndX

它和 -x 不一样,-x 是连普通未跟踪文件也算进去;-X 更像只处理 ignore 里的缓存、构建产物。清理前还是先 dry-run 看一眼比较稳。