为什么在这种情况下gitignore不起作用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我想忽略两个文件:

  • .IDEA/workspace.xml
  • omeapp/src/.IDEA/workspace.xml

我认为在.gitignore中添加这个规则就足够了:

.idea/workspace.xml

但是它只捕获顶层的.IDEA/workspace.xml(git状态显示了一些未跟踪的app/src/.dei/workspace.xml)。

我也试过**/.idea/workspace.xml但这根本行不通。帮忙?

提问于
用户回答回答于

  • 如果该模式不包含斜杠/,则git将其视为shell GLOB模式,并检查与.gitignore文件位置相关的路径名匹配(如果不是来自.gitignore文件,则相对于工作树的toplevel)。
  • 否则,git将该模式视为适合fnMatch(3)与fnm一起使用的外壳球。_PATHNAME标志:模式中的通配符与路径名中的/不匹配。

一旦路径包含斜杠,Git将不再检查路径中是否匹配,而是直接使用GLOB行为。因此,无法与.idea/workspace.xml但只为workspace.xml

用户回答回答于

这已经以GIT 1.8.4为单位

使用Platform fnMatch(3)函数(许多地方,如path spec匹配、.gitignore和.gitproperties)已被替换为通配符,允许“foo/”。**/bar与“foo/bar”、“foo/a/bar”等匹配。

**/.idea/workspace.xml在这个例子中应该可以工作了。

扫码关注云+社区