gitignore中路径/文件结束注释之间的差异

gitignore中路径/文件结束注释之间的差异,git,file,path,annotations,gitignore,Git,File,Path,Annotations,Gitignore,我目前正在从事一个java项目。在构建.gitignore时,我注意到文件结尾和路径有多个不同的注释。 我把一幅画和几个例子联系起来 他们之间有什么区别 即我注意到以下几点: .foo *.foo /*.foo 最后是**/src/…(参见此图) 这些模式是wildmatch模式。一般来说,它们与shell glob模式类似,只是: **匹配任意数量的文件或目录,或者根本不匹配 领先的否定模式(即不忽略文件) 前导的/匹配存储库的根,而不是文件系统的根 有关更多详细信息,请参见gitig

我目前正在从事一个java项目。在构建.gitignore时,我注意到文件结尾和路径有多个不同的注释。 我把一幅画和几个例子联系起来

他们之间有什么区别

即我注意到以下几点:

  • .foo
  • *.foo
  • /*.foo
  • 最后是
    **/src/…
    (参见此图)

这些模式是wildmatch模式。一般来说,它们与shell glob模式类似,只是:

  • **
    匹配任意数量的文件或目录,或者根本不匹配
  • 领先的
    否定模式(即不忽略文件)
  • 前导的
    /
    匹配存储库的根,而不是文件系统的根
有关更多详细信息,请参见gitignore(5)

因此,
.foo
匹配存储库中名为
.foo
的任何文件或目录,
*.foo
匹配存储库中以
.foo
结尾的任何文件或目录,
/*.foo
匹配存储库根目录中以
.foo
结尾的文件或目录

对于最后的模式,请看上面的几行。首先,您将忽略树中任何位置的
bin
目录(但不是文件,因为路径以
/
结尾)及其所有内容。然后,您将豁免位于
src/main
src/test
目录下的任何
bin
目录