gitignore扩展,在目录中的所有文件gitignore扩展,在目录中的所有文件(gitigno

2019-05-14 10:37发布

有没有办法忽略目录的类型的所有文件?

**显然是毫无意义的git的,所以这不工作:

/public/static/**/*.js

我们的想法是一致的任意嵌套的文件夹。

Answer 1:

从来没有尝试过,但git help ignore建议,如果你把.gitignore*.js/public/static ,它会做你想要什么。

注意:一定要还检查了Joeys的回答如下:如果你想在一个特定的子目录中忽略的文件,然后在本地的.gitignore是正确的解决方案(地方是好的)。 不过,如果你需要相同的模式适用于你的整个回购,那么**解决方案更好。



Answer 2:

这样看来,在**语法被支持git作为版本1.8.2.1根据文档 。

两个连续的星号(“ **对全路径匹配”)的模式可能具有特殊的含义:

  • 前面的“ ** ”,后跟一个斜线意味着所有目录匹配。 例如,“ **/foo ”匹配文件或目录“ foo ”的任何地方,相同图案“ foo ”。 “ **/foo/bar ”相匹配的文件或目录“ bar ”任何地方,是直属目录“ foo ”。

  • 尾随“ /** ”内相匹配的一切。 例如,“ abc/** ”匹配目录里面“的所有文件abc相对的位置”, .gitignore文件,具有无限的深度。

  • 然后连续两个星号斜杠,则斜杠匹配零个或多个目录。 例如, “ a/**/b ”匹配“ a/b ”, “ a/x/b ”, “ a/x/y/b ”等等。

  • 其他连续的星号被视为无效。



Answer 3:

更新:看看@乔伊的回答 :现在的Git支持**的模式语法。 这两种方法都应该能正常运行。


该gitignore(5)手册页中指出:

模式在同一目录从的.gitignore文件中读取的路径,或以任何父目录,在更高级别的文件模式(最多工作树的顶层)是由那些低级别的文件覆盖到的目录包含文件。

这意味着,在一个模式.gitignore在回购任何给定的目录中的文件将影响目录及其所有子目录

您提供的模式

/public/static/**/*.js

是不完全正确,首先是因为(正如你正确地指出)的**语法不使用Git的。 此外,领先/锚这一模式的路径的开始。 (所以, /public/static/*.js将匹配/public/static/foo.js /public/static/foo/bar.js除去最主要/不会工作,像匹配的路径public/static/foo.jsfoo/public/static/bar.js 编辑:只是去掉斜线将无法正常工作或者-因为该模式还包含斜杠,它是由混帐当作一个普通的,非递归壳水珠(感谢@Joey Hoer指出了这一点)。

作为@ptyx建议,你需要做的是创建文件<repo>/public/static/.gitignore和只包括以下模式:

*.js

没有领先的/ ,所以它会匹配在路径的任何部分,而这种模式将永远只能适用于文件/public/static目录及其子目录。



Answer 4:

要忽略未跟踪文件刚去的.git /信息/排除。 排除是忽略扩展或文件的列表的文件。



Answer 5:

我认为最简单的办法是使用find 。 我不喜欢有多个.gitignore挂在子目录周围,我更喜欢管理一个独特的,顶级.gitignore 。 要做到这一点,你可以简单地找到的文件添加到您.gitignore 。 假设/public/static/为你的项目/ git的家,我会使用类似:

find . -type f -name *.js | cut -c 3- >> .gitignore

我发现,切割出./开头往往是必要的混帐了解哪些文件,以避免。 因此, cut -c 3-



文章来源: gitignore all files of extension in directory
标签: git gitignore