语法概述
解读自 Mac 系统的 Git Manual (man gitignore
)
- 若 pattern 开头或者中间有
“/”
,则相对当前目录匹配,否则可以相对所有目录匹配;
“b/" 匹配 “b/”,“a/b/” 和 “a/c/b/…”
“a/b/” 只匹配 “a/b/”,不匹配 “c/a/b/” - 若 pattern 末尾有
“/”
,则只匹配目录,否则匹配目录和文件; “*”
配合规则1,可以匹配非 “/” 字符;
*.html
匹配 “m.html”,“a/m.html”- 对于规则1中所述,开头或中间有 “/” 的情况:开头
“**/”
匹配所有前置目录,结尾“/**”
匹配所有后置路径,中间“/**/”
匹配所有中间目录结构。
**/foo
匹配任意目录下的 foo
a/**/b
匹配 “a/b”,“a/c/b”,“a/c/d/b”
abc/**
匹配 abc 目录下的所有文件,无限深度
仅提交个别文件
fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;/*
会忽略根目录下的所有文件和文件夹,如果还想提交/fd1/*.txt
需要先对/fd1/
目录使用!
规则,使其不被排除,再用/fd1/*
排除该目录下的其他文件,最后再提交/fd1/*.txt
。
如下示例:
/*
!*.cpp
!*.h
!/result/
/result/*
!/result/FallingDrop/
/result/FallingDrop/*
!/result/FallingDrop/*.txt
说明:忽略全部内容,但不忽略根目录下的 *.cpp
*.h
文件,和 /result/FallingDrop/*.txt
。
注意在提交 !/result/FallingDrop/*.txt
时需要逐级排除父目录。