.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 ...
随机推荐
- 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的.而 Mybatis 在查询关联对象或关联集合 ...
- docker 单机部署redis集群
docker 部署redis集群 1.创建redis网卡 docker network create redis --subnet 172.38.0.0/16 查看网卡信息 docker networ ...
- 我所关注的几个spring设计模式
Spring框架中实现了许多的设计模式,而且都是非常优先的实现,这些值得我们学好好习. 不过话说回来,我觉得自己只要关注几个即可: 单例 工厂 代理 适配器 观察者 委派 在各种设计模式中,适配器和装 ...
- 天翼云centos7.6安装redis6.2.6
以下部分的具体略: 1.wget获取源码 2.make 这里重点说下,如何使用 utils/install_server.sh脚本 使用install_service.sh添加服务 有了这个脚本,那么 ...
- 工控必备!NXP i.MX 8M Mini开发板规格书资料分享,高性能低功耗!
1 核心板简介 创龙科技SOM-TLIMX8-B是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高端工业级核心板,A ...
- (转载)linux命令英文缩写的含义(方便记忆)
linux常用命令的英文单词缩写 命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat packa ...
- 【ClickHouse】1:clickhouse安装 (CentOS7)
一:安装clickhouse 官网地址:https://clickhouse.tech/#quick-start 按照官网提供的方法快速安装:(依次执行) sudo yum install yum-u ...
- Java Executors类的9种创建线程池的方法及应用场景分析
在Java中,Executors 类提供了多种静态工厂方法来创建不同类型的线程池.在学习线程池的过程中,一定避不开Executors类,掌握这个类的使用.原理.使用场景,对于实际项目开发时,运用自如, ...
- 【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://github.com/LuBu0505/redis-copy- ...
- iOS开发基础109-网络安全
在iOS开发中,保障应用的网络安全是一个非常重要的环节.以下是一些常见的网络安全措施及对应的示例代码: Swift版 1. 使用HTTPS 确保所有的网络请求使用HTTPS协议,以加密数据传输,防止中 ...