平时总是喜欢把日常学习的代码以代码库的形式上传到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. 网站_域名_DNS_端口_web访问过程

    网站基本概念 服务器:能够提供服务器的机器,取决于机器上所安装的服务软件 web服务器:提供web服务(网站访问),需要安装web服务软件,Apache,tomcat,iis等 域名 (Domain ...

  2. list对象转数组

    list对象转数组 package com.example.core.mydemo.json5; import org.apache.commons.collections4.CollectionUt ...

  3. org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题

    org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题 //codepublic static void copyProperties( ...

  4. apollo配置中心从数据库中查询所有的配置及项目

    apollo配置中心从数据库中查询所有的配置及项目 需求背景:如果需要从Apollo查询某个配置项做批量的更新替换,如果一个一个找不合适且容易遗漏,需要从底层数据库表中模糊查询来实现. 1.查看apo ...

  5. mklink命令使得OneDrive同步任意一个文件夹

      本文介绍利用mklink命令,使得OneDrive自动同步电脑中任意指定文件夹的方法.   OneDrive是由微软提供的云存储和文件同步服务.它提供了大量的云存储空间,允许用户将文件和数据存储在 ...

  6. emlog新浪上传插件+接口 V1.1

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` emlog新浪上传插件+接口 V1.1 日期:2018-4 ...

  7. python 注册nacos 进行接口规范定义

    背景: 一般场景 python服务经常作为java下游的 算法服务或者 数据处理服务 但是使用http 去调用比较不灵活,通过注册到nacos上进行微服务调用才是比较爽的 1.定义feginapi的接 ...

  8. C# SM2算法 加密,解密,签名,验签

    最近时间在整SM2算法,在网上看到不少代码,基本都是使用BouncyCastle库,现在这个版本算比较好的拿来分享给大家. 首先引入包 Portable.BouncyCastle 完整代码见Gitee ...

  9. 【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit(2)

    1.问题描述: 应用内支付IAP Kit和Payment Kit的区别以及适用场景? 解决方案: IAP Kit是四方支付,仅支持在线虚拟商品,如会员,游戏钻石等,双框架支持全球,目前单框架暂时只支持 ...

  10. npm install及其目录结构

    npm install 安装包及其依赖.npm install: 默认情况下,安装package.json文件中列出的所有依赖.加-P或--production后,只安装dependencies列出的 ...