.gitignore文件的使用方法(学习总结版)
平时总是喜欢把日常学习的代码以代码库的形式上传到Gitee或Github上(Github上的代码正逐渐迁移至Gitee上),但是有时候总有一些中间编译的文件不行要一起上传,原有有两个:
1.是不行Gitee上代码库中文件内容太过于杂乱有碍观瞻,
2.是因为太多无用文件的上传有些太占用空间,毕竟Gitee不像Github是对空间总量有限制的,做事情也是要长远计划一下占用率才行。
而解决git管理的代码库中对某些文件和文件夹的忽略就需要使用.gitignore文件了。
现在在Gitee上创建代码库都是可以手动选择不同语言所对应的.gitignore文件的,但是即使这样对某些项目中特定的文件和文件夹的忽略也是需要我们手动来进行配置的,因此学会使用一些.gitignore基本用法还是很有必要的。由于Github上不能自动创建.gitignore文件,因此在Github上创建.gitignore文件可以参考模板: 鬼&泣 / gitignore:https://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文件的使用方法(学习总结版)的更多相关文章
- Git忽略提交规则 .gitignore文件
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...
- 深入学习Python解析并解密PDF文件内容的方法
前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件
一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...
- iOS日常学习 - 如何配置.gitignore文件
文章为转载学习,原文地址 为什么要配置.gitigore 在我们使用git的过程当中,不是任何文件都需要commit到本地或者远程仓库的,比如一些三方库文件. 那么作为一个git新手,很多人不知道如何 ...
- 推荐学习《组织与管理研究的实证方法(第2版)》中文PDF
在写文章论文时,会涉及到观点论证,需要掌握一些实证方法. 建议学习<组织与管理研究的实证方法(第2版)>,对管理研究中涉及的方法进行了介绍,例如实验室研究,二手数据的研究,实地研究等,这对 ...
- $git学习总结系列(4)——gitignore文件
有时候工作区中会有我们创建的一些密码配置文件,或者自动生成的一些临时文件,比如python代码编译产生的.pyc文件和java代码编译产生的.class文件等,我们在提交代码的时候没有必要把这些文件也 ...
- gitignore文件中忽略项不起作用的解决方法
在使用git的时候会遇到这样的情况,我们生产的一些class或者target的目录,我不能提交,这个时候我们需要使用gitignore,但是有的时候虽然添加了,但是不起作用. 情况:开发过程中,我们自 ...
- 《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的
0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描 ...
- [转].gitignore文件不起作用的解决方案
.gitignore文件不起作用的解决方案 觉得有用的话,欢迎一起讨论相互学习~Follow Me 转载地址 https://www.cnblogs.com/liugp/p/10399282.html ...
随机推荐
- Java中PDF的转换(图片)与展示
解决的问题 有些时候我们需要在项目中展示PDF,但是直接在浏览器中加入PDF展示的插件,存在兼容性问题,某些浏览器显示效果不理想,所以我们可以将PDF转为图片,然后已图片的方式展示,效果很好. 那么怎 ...
- redis 锁
demo1 public ErrorCode initDemo1(@RequestParam("orderNo") String orderNo) throws IOExcepti ...
- FreeRTOS简单内核实现5 阻塞延时
0.思考与回答 0.1.思考一 为什么 FreeRTOS简单内核实现3 任务管理 文章中实现的 RTOS 内核不能看起来并行运行呢? Task1 延时 100ms 之后执行 taskYIELD() 切 ...
- vue3.4的更新,保证你看的明明白白
defineModel 同学已经转正 defineModel 在vue3.3中还是一个实验性功能, 但是经过一个学期的努力,该同学已经转正. defineModel的简单介绍 defineModel( ...
- FEDORA 显卡驱动安装
FEDORA 显卡驱动安装 在fedora中akmod-nvidia包可以自动的处理开源驱动屏蔽等各种问题, 强烈推荐用这个安显卡驱动. -1. 在 BIOS 中关闭安全启动 0. 切换桌面环境至 X ...
- 【论文阅读】IROS2017: Voxblox & RAL2019: Voxblox++
IROS2017: Voxblox & RAL2019: Voxblox++ Status: Finished Type: RAL Year: 2019 组织/Sensor: ETH-ASL ...
- TI AM62x工业开发板规格书(单/双/四核ARM Cortex-A53 + 单核ARM Cortex-M4F,主频1.4GHz)
1 评估板简介 创龙科技TL62x-EVM是一款基于TI Sitara系列AM62x单/双/四核ARM Cortex-A53 + 单核ARM Cortex-M4F多核处理器设计的高性能低功耗工业评估板 ...
- 使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst
1.新建项目,下载Nuget安装包 创建项目需要注意几点,如果是基于 .net framework 的项目 需要选择 相应版本的 EF, 如果是跨平台则选择EF Core版本. 我这里选择的是 .ne ...
- P7687 题解
考场上数组开大了直接 MLE 了,气. 考虑把 A,B 两种服务分开算,一个边双连通分量内的点如过有一个有服务,那么整个联通分量就都有服务. 然后按边双联通分量缩点后原图变成树,一条边是关键路线当且仅 ...
- ubuntu22 flask项目 pyinstaller打包后运行报错: jinja2.exceptions.TemplateNotFound: index.html 的一种解决方案
前言 有一个flask项目a.py, 目录结构如下: |- a.py |- templates | - index.html |- static |- images 运行 python3 a.py可以 ...