在Git中,如何忽略名称以`.foo.XXXX`结尾的所有文件,其中XXXX是任何“普通”文件扩展名?

时间:2015-04-02 04:46:59

标签: regex git gitignore glob

syntax:regexp
*.foo.[a-z]{1,4}
.gitignore中的

不起作用。我记得见过

syntax:glob

syntax:regexp

前一段时间在一些.gitignore文件中,但我无法在Git手册中提交此类语法。有没有办法在.gitignore中使用常规正则表达式?

2 个答案:

答案 0 :(得分:3)

不使用任何可能支持或可能不支持的正则表达式语法(我也没有看到任何证据),您可以使用四个规则获得相同的行为:

*.foo.[a-z]
*.foo.[a-z][a-z]
*.foo.[a-z][a-z][a-z]
*.foo.[a-z][a-z][a-z][a-z]

如果你想略微妥协,你可以使用*.foo.?*(以foo结尾的任何内容,一个点,至少还有一个字符),或*.foo.[a-z]*(以foo结尾的任何内容,然后是扩展名)以字母开头。

答案 1 :(得分:2)

您将.hgignore.gitignore混淆。

没有“普通文件扩展名”这样的东西;你可以做的就是添加以下内容:

**/foo.*

**/将匹配所有目录中的foo.*

.gitignore使用shell glob syntax

  

Git将模式视为适合消费的shell glob   fnmatch(3)与FNM_PATHNAME标志:模式中的通配符将   与路径名中的/不匹配。