.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   小石头小祖宗  阅读(15)  评论(0编辑  收藏  举报  

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示