gitignore目录中所有扩展名的文件
有没有办法忽略目录中的所有types的文件?
 **显然是没有意义的,所以这是行不通的: 
 /public/static/**/*.js 
这个想法是匹配任意嵌套的文件夹。
 从来没有尝试过,但git help ignore暗示,如果你把*.js的.gitignore在/public/static ,它会做你想做的。 
注意:一定要检查出Joeys的答案如下:如果你想忽略特定的子目录中的文件,那么一个本地.gitignore是正确的解决scheme(地方是好的)。 但是,如果您需要相同的模式来应用到您的整个回购,那**解决scheme就更好了。
 根据文档,似乎从版本1.8.2.1 , git支持**语法。 
与全path匹配的模式中的两个连续的星号(“
**”)可能具有特殊的含义:
前面的“
**”跟斜杠表示所有目录中的匹配。 例如,“**/foo”在任何地方与文件或目录“**/foo”匹配,与模式“foo”相同。 “**/foo/bar”与直接在“foo”目录下的任何地方的文件或目录“**/foo/bar”相匹配。
尾随“
/**”匹配里面的所有内容。 例如,“abc/**”匹配目录“abc”内的所有文件,相对于.gitignore文件的位置,具有无限深度。
斜杠后跟两个连续的星号,则斜线匹配零个或多个目录。 例如,“
a/**/b”匹配“a/b”,“a/x/b”,“a/x/y/b”等等。
其他连续的星号被认为是无效的。
 更新:看看@乔伊的答案 :Git现在支持模式中的**语法。 两种方法都应该正常工作。 
gitignore(5)手册页指出:
从path相同目录或任何父目录中的.gitignore文件中读取的模式(高级文件中的模式(直到工作树的顶层)被下层文件中的模式覆盖到目录包含该文件。
 这意味着任何给定目录中的.gitignore文件中的模式都将影响该目录和所有子目录 。 
你提供的模式
 /public/static/**/*.js 
 是不是很正确,首先是因为(正如你正确指出的), **语法不被Git使用。 此外,模式的开头/锚点的path名的开始。  (因此, / public/static/foo.js/public/static/foo/bar.js //public/static/foo/bar.js . /public/static/*.js将匹配/public/static/foo.js但不匹配/public/static/foo.js 。) 删除前导 编辑:只是删除前导斜杠将无法正常工作 – 因为该模式仍然包含一个斜杠,它被Git视为一个普通的,非recursion的shell glob(感谢@Joey Hoer指出了这一点)。 /也将不起作用匹配path,如public/static/foo.js和foo/public/static/bar.js
 正如@ptyx所build议的,你需要做的是创build文件<repo>/public/static/.gitignore并且只包含这个模式: 
 *.js 
 没有前导/ ,所以它将在path的任何部分匹配,并且该模式将只应用于/public/static目录及其子目录中的文件。 
要忽略未跟踪的文件,只需转到.git / info / exclude。 排除是具有被忽略的扩展名或文件列表的文件。