关于 gitignore 文件
格式规范
- 所有空行或者以 # 开头的行都会被 git 忽略
- 可以使用标准的 glob 模式匹配
- glob 模式指 shell 所使用的简化了的正则表达式,包括
*
、?
、[]
、**
- glob 模式指 shell 所使用的简化了的正则表达式,包括
- 匹配模式可以以(/)开头防止递归
- 匹配模式可以以(/)结尾指定目录
- 要忽略指定模式以外的文件或目录, 可以在模式前加上惊叹号(!)取反
通配符
*
匹配除了/
的所有字符,匹配零个或多个任意字符?
匹配除了/
的所有单字符[]
匹配任何一个列在方括号中的字符:如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配- 比如
[0-9]
表示匹配所有 0 到 9 的数字
- 比如
斜线
- 行首第一个
/
匹配路径的开始, 以.gitignore
当前所在路径计算相对路径 - 如
/*.txt
匹配与.gitignore
同一路径下的 txt 文件, 不包含.gitignore
当前路径下子文件内的 txt 文件test/*.txt
路径的开始是t
而不是/
两个星号
**/
匹配任意中间目录/**
匹配包含的所有内容, 包括文件和文件夹, 以及子文件和子文件下的文件/**/
匹配 0 个或多个目录
”!” 取消忽视
!pattern
否认 pattern, 即前一个 pattern 匹配的文件会再被包含- 注意: 如果一个文件的父文件夹被忽略, 那么 git 不能再包含该文件
忽视除了 /build/debug 下 除了 snap 的文件和文件夹
## 前两句可互换顺序 build/debug/* !build/debug !build/debug/snap ## 如果包含下面的语句则不能再包含 snap 文件和文件夹 # build # build/ # build/**
忽略文件示例
# 注释行
*.[oa]
# 忽略所有以 .a 或 .o 为扩展名的文件!lib.a
# 但是 lib.a 文件或者目录不要忽略/TODO
# 只忽略根目录下的 TODO, 子目录的 TODO 不忽略build/
# 忽略所有 build/ 目录下的文件doc/*.txt
# 忽略 doc/.txt, 但 doc/server/.txt 不忽略doc/**/*.pdf
# 忽略 doc文件夹下所有的*.pdf