git ignore 能够让我们设置一些文件或目录不被git追踪,不加到git的仓库中
但 git ignore的匹配模式和我们通常理解的可能有点出入,使用过程中经常出现这样那样的问题,这篇文章我们就介绍一下ignore 的匹配模式,重点是容易出问题的目录匹配
#,* 和!
先来说一下容易理解的,和其他语言或框架的pattern类似的模式,也是不太出问题的几个匹配符
- # 代表 行注释
- !代表 否定模式
- * 代表除了/之外的任意字符, /是目录分隔符的意思, 即 * 不会跨越目录
- ** 包含任何字符,包括目录分隔符/
举例如下
ignore pattern | 说明 |
---|
hello.* | 以hello. 开头的任何文件或目录,如 - hello.txt
- hello.c
- a/hello.java
|
!/foo/bar | 不包含 foo/bar |
a/**/b | |
跟目录相关的/
关于/的规则如下
- / 是目录分隔符,可以在ignore匹配模式的开头、中间和结尾
- 如果 / 出现在开头和中间, 即被视为相对于这个 .gitignore 文件所在目录下的路径,即 doc/frotz/ 和 /doc/frotz/ 的作用是相同的, 都匹配的是 do/fontz 目录, 而都不匹配 a/doc/frontz/ , 这点是最容易误解的
- 如果/ 只出现在结尾, 如 fontz/ , 匹配包含fontz 目录的任何目录, 即匹配 doc/frotz/ 又匹配a/doc/frontz/
- 如果/ 出现在结尾只匹配目录,否则即匹配目录又匹配文件