链接:http://bdxnote.blog.163.com/blog/static/844423520124153051409/
一、git忽略文件有三种:
1、全局范围内有效的忽略文件就是"版本库根目录/.git/info/exclude",全局范围内的所有忽略规则都以行为单位写在这个文件中;
2、局部范围内有效的忽略文件就是.gitignore,这个忽略文件只对某一级目录下的文件的忽略有效;如果某一个目录下有需要被忽略的文件,那么就可以在该目录下手工地创建忽略文件.gitignore,并在这个忽略文件中写上忽略规则,以行为单位,一条规则占据一行;比较特殊的情况就是在版本库的根目录下创建一个忽略文件.gitignore,这时,这个.gitignore忽略文件就对版本库根目录下的文件有效,等价于全局范围内的忽略文件.git/info/exclude;
3、手工指定一个忽略文件,该忽略文件中的规则和语法与前两种是一致的,随便哪一级目录都可以,只要加上对应的路径即可;
手工指定忽略文件的命令是:
git config --global core.excludesfile /path/to/.gitignore
然后手工地在对应位置创建忽略文件.gitignore,并在该文件中写入忽略规则即可;
备注:
这三种范围级别的忽略文件的内容格式和语法都是一致的;
二、忽略文件规则:
忽略规则是对文件名有效的;
A: 空行或#号开始的行,会被忽略;
B: 可以使用通配符:
* 任意字符;
? 单个字符;
[abc] 多种可能的字符a、b或c;
[a-z0-9] 表示在某个范围内进行匹配;
\ 转义字符;
! 表示取反(不忽略),写在某条规则的前面;
C: 路径分隔符"/";如果"/"后面的名称是个目录,则该目录以及该目录下的所有文件都会被忽略;如果"/"后面的名称是个文件,则该文件不会被忽略;
例如: /name
如果name是个目录,则目录name和name下的所有文件都会被忽略;如果name是个文件,则该文件不会被忽略;
D: .gitignore文件也可以忽略自己,只要把自己的名字写进来即可;
E: 一条(行)忽略规则只对某一个目录下的文件有效,而对该目录下的子目录中的文件无效;
F: 一条(行)忽略规则也可以只对单个文件有效(忽略单个指定的文件);
例如:
*.a #忽略所有以.a为后缀的文件;
!lib.a #不忽略文件lib.a;
/TODO #只忽略此目录下TODO文件,子目录的TODO不被忽略;
build/ #忽略build目录下的所有文件;
doc/*.txt #只忽略doc/下所有的txt文件,但是不忽略doc/subdir/下的txt文件;