Git的ignore文件

2019/09/23

前言

这个gitignore的规则我看过很多次和正则表达式非常像,但是看一次忘记一次,因为平时都是idea自动生成,使用频率也非常低,一般默认设置就好了,但是用一次忘一次,每次都需要重新去看笔记。今天把笔记整理一下然后再写一遍,当加强记忆和分享。

介绍

.gitignore是git提供来增强文件追踪管理的配置文件,里面列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中,一般来说被添加的都是一些日志文件,临时文件,编译文件等。

注意ignore是一个隐藏文件,win下可能需要打开隐藏文件设置,mac下可以通过终端ls -a查看到(idea中是默认显示隐藏文件的)。

一般idea在git init后会自动生成,如果需要自己手动创建mac下建议使用touch .gitignore, win下直接命名.gitignore.(前后两个点,会自动变成.隐藏文件)

通用规范

  • gitignore里面的注释是#,可以如下编写告诉自己和别人你现在忽略git管理的文件是什么类型或者为什么

image-20210615192400199

.gitignore里面的注释形式
  • 写到gitignore里面的都是需要被忽略,不被管理的(下面特例)
  • 特例-如果开头则表示这个是一定需要被管理,不受其他规则约束
  • /表示从这个项目的根目录
  • 没有/ 开头表示这个文件或者目录会计,不管在哪里只要在项目里面任何地方出现都不被管理
  • /结尾表示当前忽略的是一个文件夹(没有/结尾默认就是文件)

匹配规则

  • 以斜杠/开头表示目录
  • 以星号*通配多个字符
  • 以问号?通配单个字符
  • 以方括号[]包含单个字符的匹配列表
  • 以叹号!表示不忽略(跟踪)匹配到的文件或目录

  • 以两个星号**开头通配多级路径,如果一个星号则只能通配一级(这个规则进行开头,如果是结尾一个星号也能通配)

小练习

上面都是规则,下面来几个实战就秒懂了

  • # 表示项目里面只要含有.idea里面的文件夹全部不进行git管理
    .idea/
    
  • # 项目里面只有含有 .DS 三个字符的文件都过滤,不进行管理
    .Ds*
    
  • # 根目录下的target文件夹不进行过滤
    /target/
    
  • # 根目录下一级的target文件夹不进行过滤(注意*/这种形式就是根目录的下一级)
    */target/
    
  • # 所有地方temp文件夹下的txt后缀的文件都不进行过滤
    tmp/*.txt
    
  • # .mvn/wrapper/文件夹下的maven-wrapper.jar被git管理
    !.mvn/wrapper/maven-wrapper.jar
    

可以看到,其实很多规则是都是重复的,如果添加管理和忽略管理冲突,添加管理的优先级更高,比如

# 表示.mvn下都不管理但是.mvn/wrapper/文件夹下的maven-wrapper.jar被git管理
.mvn/
!.mvn/wrapper/maven-wrapper.jar

然后还有很多等价写法,比如**/.idea/*.idea/其实是等价的,可以怎么优雅怎么来,怎么简单怎么写

生效机制

修改.gitignore后并不会对以前被git追踪管理的文件生效,所以一定要在创建项目的时候就生成.gitignore文件,进行版本管理,但是如果修改.gitignore以后想要让原来的文件生效,需要把原来的文件都移除版本控制,然后重新添加。下面是操作命令(请保证工作区干净,没有需要提交的代码)

# 把所有的文件都移除版本控制(一定要加--cached)
git rm -r --cached .

# 把所有的文件再次添加到版本控制
git add .

# 把代码提交一下
git commit -m "chore(git): reset gitignore"

全局设置

.gitignore文件是每个项目都会有一个,来列出要忽略的文件模式。但是在git中也可以设置一个所有项目都遵循的.gitignore,可以理解为所有的项目.gitignore文件都会继承这个父级的.gitignore。这样的话,如果你是一个java程序员,你可以把java通用模板设置成全局通用。设置方法如下:

  1. 在任意位置(但建议在~等有意义的目录下)创建一个.gitignore文件,把需要写入的通用表达式写入(下面命令是在~中)
  2. 在终端中执行git config --global core.excludesfile ~/.gitignore

(转载本站文章请注明作者和出处 没有气的汽水



┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐
├ 文章已经完啦, 想要第一时间收到文章更新可以关注↓ ┤
└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘

Post Directory






下面是评论区,欢迎大家留言探讨或者指出错误哈