当前位置: 首页 > news >正文

【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仍然会对该文件进行版本管理。

推荐资料:

  • Git—.gitignore文件设置规则及全局配置(常用ignore文件)_gitignore规则-CSDN博客
  • Git - gitignore 文档 — Git - gitignore Documentation (git-scm.com)
  • 忽略文件 - GitHub 文档

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 快速识别音频文件转成文字
  • 实战:安装ElasticSearch 和常用操作命令
  • C#中的异步编程:Task、Await 和 Async
  • Settings搜索系统SettingsIntelligence
  • 数说故事 | 大数据洞察宠物消费市场数据
  • java-静态工具类获取YAML配置文件中的值
  • Vue 模版编译原理
  • git fetch和 pull的区别
  • Java基本语法学习的案例练习
  • nginx续1:
  • 商家转账到零钱开通最快捷径
  • 为什么阿里开发手册不建议使用Date类?
  • rust 初探 -- 路径(path)
  • 嵌入式必备知识总结(一)
  • 多模态大模型
  • [译]CSS 居中(Center)方法大合集
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Android单元测试 - 几个重要问题
  • JavaScript函数式编程(一)
  • Java的Interrupt与线程中断
  • vue的全局变量和全局拦截请求器
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 一、python与pycharm的安装
  • 用jquery写贪吃蛇
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​如何防止网络攻击?
  • ​用户画像从0到100的构建思路
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (function(){})()的分步解析
  • (pojstep1.3.1)1017(构造法模拟)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (安卓)跳转应用市场APP详情页的方式
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)程序员疫苗:代码注入
  • .Net - 类的介绍
  • .Net 8.0 新的变化
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法