*
匹配除了
/
的所有字符,匹配零个或多个任意字符
?
匹配除了
/
的所有单字符
[]
匹配任何一个列在方括号中的字符:如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配
比如
[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
ignore 模板