gitignore规则探究
网上有好多gitignore的帖子,文章,都说很简单的。但是我怎么就用不好呢?
我们还是来研究一下吧。
先看看git版本
先看看我测试的工作目录下有哪些文件吧。
gitignore文件是空的,现在就是所有文件了。
我们把prj添加进去看看是什么效果吧:
现在只剩下一个文件了。说明所有名字是prj的文件和文件夹都忽略了,不管其目录的相对位置在哪。
再试试把/prj添加进来吧,网上说,/开头的指文件夹。看看对不对呢。
的确是文件夹,但只是仓库根目录下的prj文件夹被忽略了。那到底是开头/指文件夹,还是指目录呢?我把根目录的prj目录删除,新建一个prj文本文件。再来看看。
文件也被忽略了,说明开头的/,只是指定根目录,不管prj是文件夹还是文件,都是忽略的。
现在把工作目录还原,再把prj/ 写进gitignore看看。
并不是网上说的,不管prj位置在哪,都忽略其下的所有文件。事实告诉我,只把根目录下的prj文件夹里的所有忽略掉了。那和/prj/*有区别吗?没有!
来试试:
就是这样!
用通配符和不用通配符效果是一样的,那为什么还要写通配符呢?答案是,如果想把prj文件夹大多数文件都忽略,只有小部分文件不想忽略,就需要这个通配符了。并在后面添加不忽略的规则。前面添加!的规则。
可以看到效果了吧。
但是我xx子目录下面还有一个prj,里面也有类似的文件,也想和这一样来忽略怎么办呢?
在prj/*前面添加*来指定任意目录吗?来试试:
这样是不行的,其意思实际上是指,根目录下以prj结尾的文件夹忽略了。
那添加 */呢?再试试:
哎,都没有忽略!再来看看一种情况:
到此,应该明白了吧?
再看一例:
本来是想把相对路径符合xx/prj/的文件夹都忽略的,但没有用。
说明只要你在规则里写了路径,就是绝对路径,没有相对路径的
xx/prj/和prj/*是一样的道理,都表明了路径,开头加不加/,都表示“绝对路径”。
结论:
1. 开头的/并不是标识文件夹的,要表明仅忽略文件夹需要在名称后面添加/,而不是前面。
2. 要想忽略某文件夹,但其下部分文件不能忽略。则需要添加通配符*,然后在后面添加!开头的规则,来指出不忽略的文件或文件夹。
3. 只要写了路径,即/左右两边都有字符,那么就是指的“绝对路径”(相对仓库的,仓库.git文件夹所在目录为根目录),但可以用*来指定层级,指定第几层子目录下的某个文件夹。
4. 不忽略的规则只要写文件名或文件夹名(名称中可以加通配符)前面加!就可以了。会在上面有通配符忽略的列表里找到匹配项来不忽略(反忽略)它。
现在就坑爹了,我工程里不同层的子目录有相类似的目录需要忽略,并其中有部分不忽略,我就得知道那个子目录的层数。像我例子里的,我想把所有prj文件夹忽略,但其中的所有.s文件不忽略,我就得这样写:
如果我想写个通用模板,并不知道prj具体在哪一层,那就多写几条吧。
prj/*
*/prj/*
*/*/prj/*
*/*/*/prj/*
*/*/*/*/prj/*
...
补充:刚才试验,发现:.gitignore不仅可以写在.git所有文件夹,还可以写在子目录里。ignore文件里写的路径全是相对该ignore文件所在位置。这样一个复杂工程,就可以分模块写忽略文件了。这个挺好的。
补充2: 刚才在网上发现有大神提出 ** 表示任意层级目录,我就试了一下:
gitignore规则探究的更多相关文章
- Git忽略规则及.gitignore规则不生效的解决办法
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: # 此为注 ...
- .gitignore规则不生效的解决办法
.gitignore规则不生效的解决办法 使用git 的时候,在.gitignore中已经添加了某个文件或者文件夹,但是使用git status还能看见该文件的修改提示--–说明.gitignore未 ...
- Android忽略文件以及.gitignore规则不生效的可行解决方案
github官方的忽略规则:https://github.com/github/gitignore/blob/master/Android.gitignore 我司项目中的忽略规则: *.iml .g ...
- Git忽略规则和.gitignore规则不生效的解决办法
Git忽略规则和.gitignore规则不生效的解决办法 Git忽略规则: 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果 ...
- 【转载】Git忽略规则和.gitignore规则不生效的解决办法
原文:https://www.cnblogs.com/zhangxiaoliu/p/6008038.html Git忽略规则: 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 ...
- Git使用的一些问题:.gitignore规则不生效、git同步代码至github和gitee
Git忽略规则及.gitignore规则不生效的解决办法 .gitignore 的基本使用 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件 ...
- Git忽略.gitignore规则不生效的解决办法
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件). 这个文件每一行保存了一个匹配的规则例如: # 此为 ...
- Git忽略规则及.gitignore规则不生效的解决办法(转)
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: 1 2 3 ...
- [转]Git忽略规则及.gitignore规则不生效的解决办法
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: # 此为注 ...
随机推荐
- 【CSS】利用宽高比例的媒体查询
aspec-ratio 取值:value (x/y) 接收min/max前缀:是 aspect-ratio描述了输出设备目标显示区域的宽高比.该值包含两个以/分隔的正整数.代表了水平像素数(第一个值) ...
- chrome常用扩展程序汇总(程序员版)
chrome常用扩展程序之程序员版 1.chrome扩展程序 Chrome插件是一个由Web技术开发.用来增强浏览器功能的小程序,其实就是一个由HTML.CSS.JS.图片等静态资源组成的一个.crx ...
- iptables 限制ip访问3306端口
*filter:INPUT DROP [0:0] #全部关闭:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -s 172.4.4.14 -p tc ...
- 浅谈vuex使用方法(vuex简单实用方法)
Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vu ...
- bzoj1444[Jsoi2009]有趣的游戏[AC自动机]
题面 bzoj 我要向师父学习善待每一只数据结构 考虑成环,那么高斯消元 然鹅这道题太小了 所以直接转移矩阵自乘就好啦 终点不向外连边 有一条向自己的,概率为一的自环来作为结尾 对于其他店 若有边\( ...
- ElasticSearch常用操作命令
查看系统信息: curl 'http://username:password@192.168.0.40:9200/' curl 'http://username:password@127.0.0.1: ...
- PMP(项目管理)备考资料汇总-来自多名项目经理的总结
上重点,所有的相关总结文档(备考计划<务必仔细看一遍>.总结.提升方法等).含易混点区分的思维导图都在QQ群里:931269244 所有整理资料的汇总说明有时候别人会问我,你这是图什么呢, ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- UI命名规范
Ui控件汇总 按钮 单行文本框 多行文本框 水平滑动条 垂直滑动条 水平滚动条 垂直滚动条 进度条 下拉列表框 复选框 UI命名规范 UI文字做好备份,方便后期维护修改 按钮命名规范:btn_ 第一个 ...
- Kubernetes基本功能
说明 目前kubernetes的资料介绍很多也很深刻,本文只是做一个针对自己学习k8s过程的介绍,仅仅是学习笔记的记录. 一.基本使用 1. 命令行 集群信息 Namespace 信息 Control ...