如何在git clean -fd中保留所有被忽略的文件?

Dan*_*Lin 39 git git-clean

当我有.gitignore data/*并运行时git clean -fd,数据文件夹及其所有内容文件将被删除.

我想要的是删除git仓库中所有未经检查的文件,同时排除所有被忽略的文件(即不要删除gitignored文件).我能做什么?

tal*_*les 44

除非-x指定了标志,否则Git通常不会清除被忽略的文件,但奇怪的是,当你按照(folder/*)进行配置时它会清除.

正如@VonC指出的那样,你应该改变你的.gitignore-file来忽略目录(data/)而不是它的内容(data/*).

这是一个微妙的差异,但它对git很重要.

  • 我同意我的评论;)+1 (8认同)
  • 有点烦人的是,如果你忽略`folder /`而不是`folder/*`那么就不能像`!folder/foo`那样做出异常.目前在Github的Visual Studio标准gitignore中存在类似的问题:https://github.com/github/gitignore/commit/9aa3e1c3a7a5d9a7ecbab67f63eb81e8b4a493b7#commitcomment-6092133 (3认同)