匹配规则
1、空行或是以 # 开头的行即注释行将被忽略。
2、可以在前面添加 正斜杠/ 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。
3、可以在后面添加 正斜杠/ 来忽略文件夹,例如 build/ 即忽略 build 文件夹,/doc/build/ 这样的目录也会忽略。
4、可以使用 ! 来否定忽略,即比如在前面用了*.apk,然后使用!a.apk,则这个a.apk不会被忽略。
5、* 用来匹配零个或多个字符,如*.[oa]忽略所有以".o"或".a"结尾;
6、[] 用来匹配括号内的任一字符,如 [abc],也可以在括号内加连接符,如 [0-9] 匹配0至9的数;
7、? 用来匹配单个字符。
8、** 匹配多级目录,可在开始,中间,结束
坑1
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -rf --cached . //-r递归, -f强制删除
git add .
git commit -m 'xxxxxxxx'
坑2
! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。 可以使用反斜杠进行转义
样例
#ignore all file
/*
#Don't ignore bellow file
!*.PRJ
!*.txt
#Don't ignore "k5_workspace/source"
!/k5_workspace/
/k5_workspace/*
!/k5_workspace/source
#Don't ignore "ast2500evb_k5_workspace/Build/output/*.ima"
!/k5_workspace/Build/
/k5_workspace/Build/*
!/k5_workspace/Build/output/
/k5_workspace/Build/output/*
!/k5_workspace/Build/output/*.ima