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

In Git, how to ignore all files whose name ends with `.foo.XXXX` where XXXX is any "normal" file name extension?

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

.gitignore 中不起作用。我记得看过

syntax:glob

syntax:regexp

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

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

*.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 结尾然后以字母开头的扩展名)。

你在混淆 .hgignore with .gitignore

没有"normal file name extension"这样的东西;您首先可以做的是添加以下内容:

**/foo.*

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

.gitignore 使用 shell glob syntax:

Git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname.