0
点赞
收藏
分享

微信扫一扫

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

相关推荐

0 条评论