跳转至

.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文件,如果上条规则忽略的是目录,此排除规则不会生效。
  • #:注释标志,不参与规则