.gitignore的作用
.gitignore文件是在git提交的时候用来屏蔽某些你不想提交上去的文件。
项目开发过程中,有时候不想把一些文件(如中间文件/编译文件等)提交到git上。这个时候就由.gitignore文件来筛选出不想提交的文件。所筛选的文件/夹将不会被追踪(tracked),push的时候也不会上传到git上。
语法规范
#:开头的行表示注释行
*:用来匹配零个或多个字符
*.a表示忽略.a文件;
*.[oa]表示忽略所有以.a和.o结尾的文件,*~忽略所有以~结尾的文件;
[]用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配0至9的数;
?用来匹配单个字符;
!:用来否定忽略,比如前面用了*.txt,然后使用!*a.txt,则这个a.txt不会被忽略
/:正斜杠在前:匹配项目根目录;如/bin表示忽略根目录下的bin文件,/bsp/表示忽略根目录下的bsp文件夹;
正斜杠在后:匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;如bsp/表示忽略bsp文件夹里的所有文件;
**:匹配多级目录,可在开始,中间,结束;
忽略优先级
在.gitignore文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
从命令行中读取可用的忽略规则
当前目录定义的规则
父级目录定义的规则,依次递推
$GIT_DIR/info/exclude 文件中定义的规则
core.excludesfile中定义的全局规则
常用匹配规则示例
bin/: 忽略当前路径下的bin文件夹,bin文件夹下的所有内容都会被忽略,不会忽略根目录下的 bin 文件
/bin: 忽略根目录下的bin文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
*.log: 忽略所有 .log 文件
config.php: 忽略当前路径的 config.php 文件
参考文献
.gitignore的用法
.gitignore文件用法及如何配置