在.gitignore中忽略子文件夹

18
我在我的repo中有许多子文件夹,其中有几个build/目录,我希望在提交代码时忽略它们。据我所知,有两种方法可以忽略所有文件夹:
  • */build/(Unix通配符)
  • build/git忽略文件/文件夹的方式)
我找到了Git ignore sub folders,但它有两个答案,我想知道这两种方法之间的区别(是否没有区别)。同样的规则适用于文件吗?
1个回答

38

build/ 是正确的做法。它会忽略存储库中所有深度不同的 build 目录内的文件。

*/build/ 的意思是忽略存储库中仅有一层 build 目录。因此,例如 buildfoo/bar/build 中的文件将不会被忽略。

如果需要更细致的控制,您始终可以使用 作为前缀添加要排除但不排除的特定目录。


2
我已经尝试了各种变化,但无法让裸仓库上的 git add . 忽略一个目录及其子目录中的所有文件。我尝试过 dirname/dirname/*dirname/**dirname/*/*,甚至在绝望中尝试了 dirname/*/*/*dirname/*/*/*/*dirname/*/*/*/*/* - Chris
谢谢@Simon,那么肯定是其他问题了。我的意思不是--bare。我在我的源文件和.gitignore所在的目录中运行git init然后运行git add --all .(带或不带--all),它包括我命名的目录下的每个非空子目录。我正在使用1.9.4.msysgit.1版本。现在通过删除文件夹,然后在索引后重新添加它们来解决了这个问题,我以为我误解了文档或语法。 - Chris
猜测这需要更深入的挖掘才能提供足够的信息来诊断,但感谢您让我放心我没有走错路。 - Chris
1
似乎你必须先删除目录,然后重新添加才能生效。这也是我遇到的情况。 - Alma

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