.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"等等。
  • 其他连续的*将被认为是普通的星号,按照上述的规则进行匹配。

posted on 2019-09-11 00:20  小石头小祖宗  阅读(15)  评论(0编辑  收藏  举报  来源

导航