想确认未跟踪文件会不会被清掉,可以先用 git clean -ndX

29 次浏览2 条回复

清理构建产物前,我一般会先做一次只预览不删除的检查:

git clean -ndX

这里的 -n 是预览,-d 会把未跟踪目录也列出来,-X 只匹配被 .gitignore 忽略的文件,比如 dist、缓存目录。确认列表没问题后,再把 -n 换成 -f:

git clean -fdX

环境:Git 2.25+。如果连没有被忽略的未跟踪文件也要一起检查,可以先看 git clean -nd,别直接执行删除参数,尤其是在还没提交的工作区里。

-X 和 -x 这个区别也挺容易弄反:前者只清理被忽略的文件,后者会把所有未跟踪文件都纳入范围。要是只想预览某个目录,可以在命令末尾加路径,例如 git clean -ndX -- build/。另外 git clean 不会动已跟踪文件,但对未跟踪内容确实不可恢复,预览结果里有不确定的路径时我会先停一下确认。

uitfLv1#1

-X 和 -x 这个区别也挺容易弄反:前者只清理被忽略的文件,后者会把所有未跟踪文件都纳入范围。要是只想预览某个目录,可以在命令末尾加路径,例如 git clean -ndX -- build/。另外 git clean 不会动已跟踪文件,但对未跟踪内容确实不可恢复,预览结果里有不确定的路径时我会先停一下确认。

补一个比较稳的用法:不确定清理范围时,可以先用交互模式确认每一项:

git clean -i -dX

它会先列出候选项,再让你选择要删除的内容,适合第一次清理某个仓库时用。确认流程没问题后,CI 里再考虑用 -fdX 这种非交互命令。