.gitignore中多个文件扩展名的简写

Jas*_*son 6 git gitignore

是否有类似于Bash脚本的简写形式,用于匹配.gitignore文件中的多个不同扩展名,例如:

*.{bak,save,aux,nav,toc}
Run Code Online (Sandbox Code Playgroud)

上面的语法绝对不会工作。

Mog*_*zol 17

在其他的答案中提到的方法,*[.bak, .save, .aux,. nav, .toc]不起作用。或者至少,不像预期的那样。它实际上选择的不仅仅是那些扩展。

据我所知,没有办法做到这一点,除非您要忽略的扩展名都是一个字符长。

根据Git 的文档

" []" 匹配选定范围内的一个字符

从该页面后面的示例中可以看出:

# ignore objects and archives, anywhere in the tree.
*.[oa]
Run Code Online (Sandbox Code Playgroud)

这将忽略任何.o.a文件。

所以这意味着一个模式 like 的*[.ext, .txt, .bin]行为与*[beintx., ](这只是删除和排序重复字符的相同模式)并且将忽略(包括扩展名)这九个字符中的任何一个结尾的任何文件。

我刚刚在我自己的 Git 存储库上尝试了这个,它确实似乎遵循了这种行为。

  • 以下是我如何忽略目录中生成的“*.png”和“*.svg”:“**/asciidoc/**/*.[ps][nv]g”这将生成“*.pvg”, `*.sng` 等虽然匹配,但这是我能做的最好的。 (2认同)

Lan*_*ite 1

在网上找不到答案,所以我自己尝试了一下,结果成功了(使用 SourceTree 创建一个测试本地存储库)。这是编辑 .gitignore 文件。

*[.bak、.save、.aux、. 导航,.toc]

逗号和句号之间有空格或没有空格也可以。

因此,就我而言,我必须执行此操作

忽略此目录中的所有文件,除了 dll 和 dic 文件:
Web.Site/Third-party Assemblies/*
!Third-party Assemblies/**/*[.dll, .dic]

  • 这是行不通的。git 文档指出“`[]` 匹配选定范围内的一个字符”(https://git-scm.com/docs/gitignore#_pattern_format)。所以 `*.[oa]` 将匹配所有 `.o` 和 `.a` 文件。您的字符串实际上将匹配名称(包括扩展名)**以** `.`、`b`、`a`、`k`、`(逗号)`、`(空格)`、`s` 结尾的任何文件、“v”、“e”、“u”、“x”、“n”、“t”、“o”或“c” (12认同)
  • 对于其他困惑的人(比如我):是的,你每次都需要重复这个点。放在前面是不行的 (2认同)