跳转至

.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.txtdir/1.txt 都被排除。
  • ?: 表示匹配单个字符,不会匹配 /
  • *: 表示匹配任意字符,不会匹配 /
  • **: 表示匹配任意中间目录,如 a/**/d,会匹配 a/b/c/da/b/da/d
  • !: 忽略匹配项,通常用于把上一个匹配模式中匹配的忽略掉,如 *.txt!2.txt,将匹配所有以 .txt 结尾的文件,但排除 2.txt 文件,如果上条规则忽略的是目录,此排除规则不会生效。
  • #: 注释标志,不参与规则