.gitignore 规则
一个项目下可以有多个.gitignore文件,每一个
- 项目下每一层的`.gitignore`定义的规则只影响在`.gitignore`文件所在目录及以下目录或文件
- `!`不能作用在父目录被忽略的情况。
- `/`出现在开头或中间时,都表示从.gitignore文件所在位置开始匹配
- `?`和`*`都不会匹配`/`
当排除文件夹A时,即使!忽略的文件a在这个A目录下,git也不会去跟踪A/a文件。
这时可以这样做。用`A/*`排除A目录下所有文件,再用`!a`忽略a文件
/
开头和结尾
- 以
/
开头 /xx
表示仅从从当前目录(.gitignore 文件所在位置)搜索 xx
,如 /1.txt
,表示根目录下 1.txt
文件被排除,而 dir/1.txt
文件不会被排除。
- 以
/
结尾 xx/
表示 xx
文件夹及其下文件被排除,而不会排除文件 xx
文件。
- 不以
/
结尾的,会匹配文件和目录
/
在中间层级,也表示从当前目录(.gitignore 文件所在位置)搜索,如 doc/frotz/
仅匹配 doc/frotz
,而不匹配 a/doc/frotz
/
不在开头且不在中间的 xx
表示在项目下所有层级目录下搜索 xx
,如 1.txt
,表示 1.txt
和 dir/1.txt
都被排除。
?
: 表示匹配单个字符,不会匹配 /
*
: 表示匹配任意字符,不会匹配 /
**
: 表示匹配任意中间目录,如 a/**/d
,会匹配 a/b/c/d
和 a/b/d
或 a/d
!
: 忽略匹配项,通常用于把上一个匹配模式中匹配的忽略掉,如 *.txt
和 !2.txt
,将匹配所有以 .txt
结尾的文件,但排除 2.txt
文件,如果上条规则忽略的是目录,此排除规则不会生效。
#
: 注释标志,不参与规则