平时总是喜欢把日常学习的代码以代码库的形式上传到Gitee或Github上(Github上的代码正逐渐迁移至Gitee上),但是有时候总有一些中间编译的文件不行要一起上传,原有有两个:

1.是不行Gitee上代码库中文件内容太过于杂乱有碍观瞻,

2.是因为太多无用文件的上传有些太占用空间,毕竟Gitee不像Github是对空间总量有限制的,做事情也是要长远计划一下占用率才行。

而解决git管理的代码库中对某些文件和文件夹的忽略就需要使用.gitignore文件了。

现在在Gitee上创建代码库都是可以手动选择不同语言所对应的.gitignore文件的,但是即使这样对某些项目中特定的文件和文件夹的忽略也是需要我们手动来进行配置的,因此学会使用一些.gitignore基本用法还是很有必要的。由于Github上不能自动创建.gitignore文件,因此在Github上创建.gitignore文件可以参考模板: 鬼&泣 / gitignorehttps://gitee.com/devilmaycry812839668/gitignore

=======================================

要想学习.gitignore文件的编写首先需要知道文件和文件夹的路径表示方法:

mtk  

表示一个无路径的文件mtk或文件夹mtk(因为文件夹也是一种特殊的文件)

mtk/  

表示一个无路径的文件夹mtk

/home/mtk    

表示/home路径下的一个文件mtk或文件夹mtk

/home/mtk/   

表示/home路径下的一个文件夹mtk

可以知道,如果在一个name前面加“/”则表示指定路径下的名为name的文件或文件夹,如果在一个name后面加“/”则无指定路径下的名为name的文件夹。

扩展一下,如果在一个name前面和后面都加“/”则表示指定路径下的名为name的文件夹,如:/home/mtk/  代表/home路径下的名为mtk的文件夹。

-----------------------------------------------------------

有了对指定路径和不指定路径的文件和文件夹写法的了解就可以看下.gitignore文件的写法了。

注意:

.gitignore一般放在项目目录的顶层,从Linux目录挂载的角度来看.gitignore所在的目录路径则为根目录“/”,因此如果在.gitignore文件中指定忽略文件或文件夹的路径的话起始根目录“/”均为.gitignore所在的目录路径。

在 .gitignore 中写:

mtk             代表根目录“/”及所有子目录及其迭代子目录下的名为mtk文件及文件夹均被忽略。

mtk/            代表根目录“/”及所有子目录及其迭代子目录下的名为mtk文件夹被忽略。

/xxx/mtk      代表目录“/xxx”下的名为mtk文件及文件夹均被忽略。

/xxx/mtk/     代表目录“/xxx”下的名为mtk文件夹被忽略。

在 .gitignore 文件中可以写忽略条件同时也可以写不忽略的条件,那就是在条件前加  “  !” 。

如:

!mtk/1.txt                   表示不忽略根目录“/”及所有子目录及其迭代子目录下的名为mtk文件夹下的名为1.txt文件及名为1.txt的文件夹。

!/mtk/1.txt                  表示不忽略目录“/mtk”下的名为1.txt的文件及名为1.txt的文件夹。

既然在.gitignore 文件中既可以写忽略条件也可以写不忽略条件,那么一旦发生冲突那怎么处理呢?

其实这个在 .gitignore 中很常见,.gitignore 的条件规则的生效是从上到下的,也就是说如果新设定与旧设定有冲突,那么冲突的地方按新设定为准,如:

/mtk

!/mtk/1.txt

第一条设定表示忽略/mtk文件及文件夹,这当然也包括忽略/mtk文件夹下的所有内容;第二条设定表示不忽略文件夹/mtk/下的名为1.txt的文件及文件夹。最终的生效结果就是/mtk目录下的所有文件除了/mtk/1.txt文件及/mtk/1.txt/文件夹不忽略其他的均忽略掉。

在 .gitignore 中使用 “ ! ” 还有一个比较少见的场景,写法如下:

mtk

!mtk/

因为文件夹也是一种文件,所以第一行的设定表示忽略不指定路径下的名为mtk的文件及文件夹,但是我们实际只想忽略名为mtk的文件而不想忽略名为mtk的文件夹,就可以用上面的写法。

那么如何只忽略不指定路径的名为mtk的文件夹呢,那就这样写:

mtk/

=========================================

.gitignore 文件的高级写法

上面写的都是 .gitignore 文件的基础用法,下面介绍高级用法,也就是通配符的使用。

常用通配符:

(1)星号“*” :匹配任意多个字符,'/' 符号除外;

(2)问号“?”:匹配任意单个字符,'/' 符号除外;

(3)中括号“[xxx]”:匹配括号内多个字符中的任意一个,功能与“?”符号相类似,只不过设定了可以匹配的范围,与其他通配符相同这里的匹配字符不能包括'/' 符号;

在 .gitignore 中通配符都是用来匹配多个文件或文件夹名的,因此不允许包括路径名,所以代表路径分隔符的 '/' 符是不允许包括的。

具体用法:

abc*def      表示名前缀为abc后缀为def的文件及文件夹,如abc123def,abcwsxdef,abc9p9def 等;

abc?def     表示名前缀为abc后缀为def的并且中间只有一个字符的文件及文件夹,如abc1def,abcwdef,abc9def 等;

abc[123xyz]def     表示名前缀为abc后缀为def的并且中间只有[123xyz]中任意一个字符的文件及文件夹,如:

abc1def,

abc2def,

abc3def,

abcxdef,

abcydef,

abczdef

双星号 “**” 的用法,或者叫做“/**/”的用法:

“/**/” 并不是通配符但是也具备一定的通配作用,“/**/” 表示多级目录,直白的所就是可以表示中间带有“/”的字符串,当然如果“**”可以表示为空,那么“/**/” 表示为“/”。

src/**/mnt    表示路径名称中前面具有src文件夹路径而路径最后面为mnt的任意存在的路径,

如:

src/xxx/yyy/mnt

src/xxx/zzz/mnt

src/xxx/mnt

src/mnt

-----------------------------------------------------------------------------

 其他:

在 .gitignore 中注释是以  “#”  开始的。

空行不匹配任何文件及文件夹,或者说空行只表示空行。

由于git不跟踪空目录,因此即使空目录符合.gitignore中的忽略条件也不会被忽略(因为空目录也不会被跟踪也就不存在被忽略这一说了),因为git根本也不会对其进行跟踪。

.gitignore 文件一般在创建代码库之初时创建,因为符合被忽略条件的文件被提交到代码库后才创建 .gitignore 文件也不会影响已经提交到代码库中的文件。

---------------------------------------------

.gitignore文件的使用方法(学习总结版)的更多相关文章

  1. Git忽略提交规则 .gitignore文件

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  2. 深入学习Python解析并解密PDF文件内容的方法

    前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...

  3. 深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件

    一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...

  5. iOS日常学习 - 如何配置.gitignore文件

    文章为转载学习,原文地址 为什么要配置.gitigore 在我们使用git的过程当中,不是任何文件都需要commit到本地或者远程仓库的,比如一些三方库文件. 那么作为一个git新手,很多人不知道如何 ...

  6. 推荐学习《组织与管理研究的实证方法(第2版)》中文PDF

    在写文章论文时,会涉及到观点论证,需要掌握一些实证方法. 建议学习<组织与管理研究的实证方法(第2版)>,对管理研究中涉及的方法进行了介绍,例如实验室研究,二手数据的研究,实地研究等,这对 ...

  7. $git学习总结系列(4)——gitignore文件

    有时候工作区中会有我们创建的一些密码配置文件,或者自动生成的一些临时文件,比如python代码编译产生的.pyc文件和java代码编译产生的.class文件等,我们在提交代码的时候没有必要把这些文件也 ...

  8. gitignore文件中忽略项不起作用的解决方法

    在使用git的时候会遇到这样的情况,我们生产的一些class或者target的目录,我不能提交,这个时候我们需要使用gitignore,但是有的时候虽然添加了,但是不起作用. 情况:开发过程中,我们自 ...

  9. 《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的

    0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描 ...

  10. [转].gitignore文件不起作用的解决方案

    .gitignore文件不起作用的解决方案 觉得有用的话,欢迎一起讨论相互学习~Follow Me 转载地址 https://www.cnblogs.com/liugp/p/10399282.html ...

随机推荐

  1. JavaScript通过递归实现深拷贝

    思路 首先是用Object.prototype.toString.call(obj)来得到传入的值的类型,如果是几个基本类型,则直接返回值就可以了 如果是引用类型,则通过深拷贝函数递归进行再次拷贝. ...

  2. 浅谈 DDD 领域驱动设计

    文章简介 在B端产品研发及项目实施中,DDD带给我们哪些思考?我们是如何应用的?本文不是科普贴,旨在分享我们的经历和思考. 背景 Domain Driven Design(简称 DDD),又称为领域驱 ...

  3. 实验10.3层vlan互通实验

    # 实验10.三层Vlan互通实验 本实验是跨vlan路由的第二种形式,比第一种形式更常见常用一些. 需要用到三层交换机. 实验组 交换机配置 不同于以往,本次的交换机使用了三层交换的功能 SW vl ...

  4. k8s学习总结之各组件功能及作用的详细介绍

    K8S集群架构: 一个K8S集群是由两大部分组成: Master节点和Node节点 一.Master节点主要包括API Server.Scheduler.Controller manager.etcd ...

  5. 移动web布局方法

    继续更新移动端的一个布局,这也是经典中的经典,当初只知道个rem和vwvh适配,其实这里面还有很多的门道不只是一个适配这么简单 一.前置 1.背景缩放 我们都知道做移动端,给的图都是二倍图,你拿来用直 ...

  6. 一个难忘的json反序列化问题

    前言 最近我在做知识星球中的商品秒杀系统,昨天遇到了一个诡异的json反序列化问题,感觉挺有意思的,现在拿出来跟大家一起分享一下,希望对你会有所帮助. 案发现场 我最近在做知识星球中的商品秒杀系统,写 ...

  7. LabVIEW的自定义按钮

    下载几张图片: 比较好的 网站1:https://www.iconfont.cn/ 网站2:https://yesicon.app/ 选用windows风格按钮控件进行自定义, 自定义的图片分别放入这 ...

  8. thinkphp模型hasOne、hasMany、belongsTo详解

    在ThinkPHP框架中,hasOne.hasMany和belongsTo是用于定义模型间一对多(1:n).一对一(1:1)和多对一(n:1)关联关系的方法.以下是一些简单的示例来解释这些关系: 1. ...

  9. mysql Using join buffer (Block Nested Loop) join连接查询优化

    最近在优化链表查询的时候发现就算链接的表里面不到1w的数据链接查询也需要10多秒,这个速度简直不能忍受 通过EXPLAIN发现,extra中有数据是Using join buffer (Block N ...

  10. 安装phpgjx工具

    直接按照phpgjx配置文件进行安装. 重启mysql和访问phpgjx都会生成配置的日志文件 按照文档安装可能日志文件中不会产生SQL记录 解决方案: 可以进入mysql后,查看该日志是否开启 / ...