gitignore的匹配规则(全)

.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目录。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.gitignore规则不生效可能是由以下几个原因引起的: 1. 文件已经被Git跟踪:如果文件已经被Git跟踪,即使在.gitignore中指定排除该文件,Git仍然会继续跟踪它。在这种情况下,你需要先使用以下命令将该文件从Git中移除: ``` git rm --cached 文件路径 ``` 然后提交更改: ``` git commit -m "Remove tracked file" ``` 2. .gitignore规则不正确:请确保你的.gitignore规则正确无误。一般情况下,.gitignore文件遵循以下规则: - 使用斜杠(/)表示目录,并且可以递归地排除目录下的所有文件和子目录。 - 使用星号(*)表示任意字符,使用问号(?)表示任意单个字符。 - 使用叹号(!)表示不排除指定的文件或路径。 如果你不确定规则是否正确,可以使用git check-ignore命令来检查.gitignore是否有效: ``` git check-ignore -v 文件路径 ``` 3. 文件已经被缓存:如果文件已经被Git缓存,.gitignore规则将不会对其生效。你可以使用以下命令清除缓存: ``` git rm -r --cached . git add . ``` 4. 已经存在的文件:如果在.gitignore规则添加之后,你创建了新的文件,并且这些文件与.gitignore中的规则匹配,那么这些新文件将会被Git跟踪。在这种情况下,你需要先将这些文件移除Git的跟踪,然后再提交更改。 如果以上方法都没有解决你的问题,可能是其他原因导致的。你可以提供更多具体的信息,以便我能够给出更精确的解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值