Git:用 clean 先预览要清掉的未跟踪文件

35 次浏览2 条回复

本地跑构建或试脚本后,目录里有时会多出一堆没进 Git 的文件。直接删有点慌,可以先用 git clean -nd 看看它准备删什么。

环境:Git 2.30+。开个空目录试一下:

mkdir git-clean-demo && cd git-clean-demo
git init
printf 'keep\n' > keep.txt
git add keep.txt
git commit -m 'init'

mkdir dist
printf 'temp\n' > dist/out.txt
printf 'log\n' > debug.log

git status --short
git clean -nd

-n 是 dry run,只预览不动文件。确认这些东西确实不要了,再执行:

git clean -fd

我一般只在确认 git status --short 里没有想保留的未跟踪文件后才用。要是只是想清某个目录,也可以写成 git clean -nd -- dist/,范围小一点更安心。

补一个小坑:git clean -fd 默认不会删 .gitignore 里忽略掉的东西,比如很多项目的 node_modules/、.cache/ 之类还会留着。

如果真要连忽略文件一起看,先用 git clean -ndX 预览只清 ignored 文件;git clean -ndx 则是忽略和未跟踪都列出来,范围更大,最好别直接手滑执行。

还可以看一下 git clean -i,它会进交互模式,可以一项项选要删的文件。

我觉得它适合那种目录里混着临时文件和可能要保留的小草稿时用,先 git clean -nd 看范围,再 git clean -i 慢慢挑,比直接 -fd 没那么刺激。