Git:运行git clean时排除某些文件

4
我希望清理被.gitignore忽略的文件,但是我想要排除一些由排除选项指定的文件。 然后,我不想删除未跟踪的文件。
dist                     (ignored)
node_modules             (ignored)
.env                     (ignored but I want to exclude for the cleanup)
I_do_not_want_add_yet.js (untracked, I don't want cleanup some untracked files)
package.json             (There are many other tracked files)

所以我查看了一些帖子并尝试了以下命令:

$ git clean -ndX -e .env
Would remove dist/
Would remove node_modules/
Would remove .env   # Oops!

$ git clean -ndX --exclude='!.env'
Would remove dist/
Would remove node_modules/
Would remove .env   # Oops!

$ git clean -ndx -e .env
Would remove dist/
Would remove node_modules/
Would remove I_do_not_want_add_yet.js   # Oops!

你有好的想法吗?


4
考虑到 git-clean 的主要目的是做与你想要的相反的事情,我不确定它是否是合适的工具。 - millimoose
3
您可以使用 git status --ignored 命令,然后在删除文件之前从中筛选出要保留的文件。 - millimoose
太棒了!我从你说的话中得到了一个好的提示。它的命令很有帮助。谢谢。 - kurone-kito
1个回答

1
问题可以使用命令解决,这有点hacky:
git ls-files --other --ignored --exclude-standard \
  | grep -v -E "^\.env" \
  | xargs -I{} rm -rf {}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接