.gitignore文件可能我们一般不会太在意,或者去编辑他。但是其实其中有很多规则。
一.直接写一个文件名,也就是一串英文。如下:dist
所有名叫dist的文件和文件夹都会被匹配,无论被埋的多深。
二.带斜杠,有3个位置,前/中/后
斜杠表示,从当前.gitignore文件所在位置出发。
1.前的时候:
也就是同级目录下的dist,当然也可能是文件夹和文件。
把.gitignore移到b文件下,效果如下。
2.中间的时候
也就是找到a目录下的dist文件或者文件夹了。
3.末尾的时候
表示只匹配名为dist 的文件夹。其中a下面的dist文件夹被排除了,但是b下面的dist文件没有。
三。功能符号的使用
1.星号*
*表示除斜杠外的所有,其中1.jpg和2.jpg全被被排除了。
那什么叫排除斜杠呢,如下例子。
其中a文件夹下面的1.jpg没有被排除。原因是:
因为*不匹配斜杠
而1.jpg的完整路径是:a/dist/1.jpg
而上面写的是a/*.jpg,其中的斜杠匹配不了。
2.两个星号:**
那如果要匹配a目录下所有的jpg,不管埋的多深。这里需要两个星号:**,
如上,表示a目录下无论多少层级都可以匹配了。
3.问号:?
问号:?表示一个字符。其中,名叫1.jpg的文件被忽略,但是11.jpg就不会
反言之,两个问号表示两个字符
4.正则表示
[0-9]在这里表示一个字符,取值为0-9,因此11.jpg就不行,a.jpg也不行。
5.感叹号:!
这里我全匹配了a下面的所有带有后缀的文件,但是!表示除了。那所以1.txt在前面的规则基础上不被排除了。
这样做的还是很有实际意义的。
因为如果这个a目录是一个静态资源,不用感叹号去排除其中的一个文件,那整个目录都不会被跟踪,在服务器上,就没有a这个目录,有可能报错。
那如果我们需要这个目录,但是不要其中的图片等资源文件。
6.补充 .keepgit
一般做法是:
在a目录下,创建一个.keepgit文件,然后在.gitignore中写。这样就保证服务器中不至于没有a目录。