【Git】.gitignore全局配置与忽略匹配规则详解

设置全局配置

1)在C:/Users/用户名/目录下创建.gitignore文件,在里面添加忽略规则。

如何创建 .gitignore 文件?
新建一个.txt文件,重命名(包括后缀.txt)为 .gitignore 即可。

2)将.gitignore设置为全局
C:\Users\用户名/目录下找到.gitconfig文件,如下图:
image.png

  • 设置方式一(命令行配置):

在Git中输入配置命令:

git config --global core.excludesfile ~/.gitignore
  • 设置方式二(手动配置):

打开.gitconfig,在其中添加以下信息:

[core]
	excludesfile = C:/Users/用户名/.gitignore

配置成功都可在.gitconfig中看到相应信息:
image.png

Git 常用忽略规则匹配语法

.gitignore 文件中,每一行的忽略规则的语法如下:

语法含义示例解释
空格不匹配任意文件,可作为分隔符//
#开头注释标识//
!开头不忽略(跟踪)匹配到的文件或目录!/bin/run.sh不忽略 bin 目录下的 run.sh 文件
/开始匹配项目根目录/bin忽略根目录下的bin文件
/结束只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件bin/忽略当前路径下的bin文件夹, 该文件夹下的所有内容都会被忽略,不忽略bin文件
?通配符匹配一个任意字符,但不包括斜杠file?.txt匹配file1.txt、file2.txt等
*通配符匹配多个字符,但不包括斜杠*.txt匹配所有.txt文件
**通配符匹配多个字符,包括斜杠logs/**/*.log匹配logs目录中任意子目录下的.log文件
[abc]模式匹配任何一个括号内的字符te[st]匹配test或tst
[^abc]模式匹配不在括号内的任何一个字符te[^st]匹配ten、ted等,但不匹配test或tst
{string1,string2,...}模式匹配大括号内指定的任一字符串{read,write}[me]匹配readme或writeme
\字符用于转义特殊字符\*匹配*字符本身,而不是作为通配符
  • 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
  • 具体更详细的规则推荐参考 Git & GitHub 官方文档(文末有链接)。

Git 忽略规则优先级

在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

  • 从命令行中读取可用的忽略规则
  • 当前目录定义的规则
  • 父级目录定义的规则,依次地推
  • $GIT_DIR/info/exclude 文件中定义的规则
  • core.excludesfile中定义的全局规则(即我们定义的全局配置)

因此,设置全局过滤配置文件 .gitignore 后,如果在某个版本库里也设置了.gitignore (局部过滤配置文件),那 git 会优先考虑局部的过滤规则,然后再考虑全局。

.gitignore规则不生效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

注意:

  • git 对于 .gitignore配置文件是按行从上到下进行规则匹配的
  • 如果你创建.gitignore文件之前就push了某一文件,那么即使你在.gitignore文件中写入过滤该文件的规则,该规则也不会起作用,git仍然会对该文件进行版本管理。

推荐资料:

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值