.gitignore文件内容格式规范介绍说明详解

Posted 大茅坑的小石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.gitignore文件内容格式规范介绍说明详解相关的知识,希望对你有一定的参考价值。

引言

我们在使用github或者gitee进行代码管理的时候,经常要接触git,很多时候我们希望项目中的一些文件不被纳入版本控制。比如我一个java工程,每次改改代码编译之后都会生成class文件,但是我不希望对我的class文件进行版本控制,希望git可以把class文件ignore掉。
此时,就需要我们的​​​.gitignore​​​文件出场了。这里我就简单介绍一下​​.gitignore​​文件内容的格式。


  • 空行不匹配任何文件,可以用来对内容分割增强阅读性
  • #开头表示注释。如果格式需要#开头,那么需要转义一下:前面加上反斜杠("​​\\​​")
  • 末尾的空格会被忽略,除非被反斜杠引用
  • "​​!​​"前缀可以使他后面的模式变得无效。他可以用于把之前被忽略的文件再次包含进来。但是出于性能考虑被父目录所忽略的文件,这里不会再次被包含进来。如果被忽略的文件以!开头,那么需要转义一下。
  • 以斜杠结尾的模式,匹配文件夹。例如​​foo/​​会匹配上foo文件夹,但是不会匹配普通的文件foo或者符号文件。
  • 如果一个模式中不包含斜杠,那么他会被当做shell的glob模式进行匹配,匹配的位置为当前​​.gitignore​​所在的文件夹,如果没有​​.gitignore​​那就是工作区的顶层目录
  • 除此之外,Git会使用一下的shell glob模式: “​​*​​” 可以匹配除了 “​​/​​“以外的任何东西,”​​?​​” 可以匹配除了 "​​/​​“以外的任意字符,”​​[]​​"可以匹配一个在特定范围内的字符
  • 开头使用的反斜杠匹配路径的开始位置。例如:"/*.c"可以匹配"cat-file.c"文件,但是不能匹配"mozilla-sha1/sha1.c"文件

连续的两个星号具有特殊的含义:

  • “​​**/​​​“开头表示匹配所有目录。例如: “​​**/foo​​​” 匹配所有所有目录下名称为foo的文件和文件夹,”​​**/foo/bar​​” 匹配所有foo文件夹下名称为bar的文件和文件夹
  • "​​/**​​​"结尾表示匹配在他下面的所有东西。例如: "​​abc/**​​​"匹配所有在abc文件夹下的文件,当然这个abc的路径是相对于​​.gitignore​​ 文件所在的文件夹。
  • "​​/**/​​​"匹配零到多个文件夹。例如: “​​a/**/b​​​“可以匹配”​​a/b​​​”, “​​a/x/b​​​”, "​​a/x/y/b​​"等等。
  • 其他连续的​​*​​将被认为是普通的星号,按照上述的规则进行匹配。

以上是关于.gitignore文件内容格式规范介绍说明详解的主要内容,如果未能解决你的问题,请参考以下文章

gitignore 规范

linux命令详解

git--.gitignore--使用/详解/实例

gitIgnore说明

git 使用详解—— 最基本命令 + .gitignore 文件

基于 MBTiles 规范扩展的缓存文件格式说明