详解gitignore的使用方法,让你尽情使用git add .
大家好,欢迎来到周一git专题。
今天和大家聊聊gitignore的作用,其实如果你英文还可以的话,你应该已经基本上猜到它的作用了。ignore在英文当中的意思是忽视、忽略,gitignore自然就是git当中的忽视和忽略,言下之意就是忽略某些文件。所以gitignore的作用就是帮助我们在git add时将我们指定的一些文件自动排除在外,不提交到git当中。
ignore的作用
看到这里你可能很疑惑,git创造出来就是为了管理代码和文件的,为什么还要禁止一些文件提交呢?
其实也很简单,举个很简单的例子。比如当我们写一些编译型语言的时候,比如C、C++、Java、go。我们在运行之前往往需要编译一下将它们编译成可执行的二进制文件,也称为binary文件。编译之后的binary文件其实是比较大的,要比源码大很多。经常一个几十行的代码编译出来好几百KB甚至1MB这都是很正常的,像是这些二进制文件我们就完全没有必要上传。
因为不论是谁拿到源代码编译一下就可以获得一样的结果,完全没有上传可执行文件的必要。相反它还会在git仓库当中占据大量的空间,以后不论项目经过多少次迭代,它都会一直停留在git仓库当中,占据磁盘资源。
像是这样没有必要上传的文件还有很多,比如Java编译出来的class文件,一些中间结果、配置文件等等。我们往往图方便都是会喜欢在使用git add提交文件的时候使用git add .也就是提交全部的命令来提交。但是如果我们目录下有这些我们不希望提交的内容的话,也一样会全部提交上去,所以我们希望可以在一个地方进行设置,这样当我们使用git add .的时候可以避开一些我们不希望提交上的文件。
这个用来设置的地方就是gitignore文件。
使用方法
gitignore的使用方法非常简单,我们在git目录下创建一个.gitignore文件,然后在这个文件当中列举出我们不希望提交的文件即可。
凡是列在这个文件当中的名称,当我们在使用git add的时候都会替我们忽略掉。我们也没有必要从头开始编写这个gitignore文件,因为git当中已经替我们写好了很多模板,我们可以直接拿过来参考。
模板的地址:https://github.com/github/gitignore
我们打开之后会看到各种ignore文件,这些都是为各个语言定制的gitignore文件。
我们随便打开一个看看。比如打开一个golang的:
从注释上我们可以看出来,主要都是一些编译之后的结果。
设置ignore
gitignore文件的语法简单说起来可以归结为5条,这5条都挺简单的,我们一条一条来说。
#表示注释
这一条很简单,没什么好说的,#开头的行会被git忽略,因为它表示注释。这个注释方法和Python以及shell脚本是一样的,写过的同学应该都不陌生。
忽略整个文件夹
如果我们想要忽略某个路径下文件夹内的所有内容,那么我们可以写出文件夹的路径再加上斜杠作为结尾即可。
举个例子,假如说我们希望过滤掉src/build文件夹下的所有内容,我们可以这么写:
src/build/
那么这个路径下的所有内容都会被忽略,这个路径是相对路径。
!表示取反
前面说了,我们可以写出一个文件夹的路径来忽略掉这个文件夹下的所有文件,那么假如说这个文件夹当中有一个文件是我们希望提交的,那应该怎么办呢?
我们可以用!命令来取反,表示我们指定的可以不遵守忽略条件的文件名。
比如说我们想要保留src/build路径下叫做main.go的文件,那么我们可以加上一行:
!main.go
glob模式匹配
我们都知道正则表达式非常复杂,正则表达式入门这一本书足足有好几百页这么厚。但是实际上我们一般情况往下用不到这么复杂的模式匹配,所以我们在shell命令当中常用的简化了的模式匹配规则,它比正则表达式要简单很多。
比如*可以代表一切的字符串,可以是0个也可以是任意多个字符。[abc]表示匹配方括号当中的任何一个字符,?表示匹配任何一个字符。[0-9]表示匹配0-9当中任意一个数字,两个*号表示任何中间目录,比如src/**/build,可以匹配到src/test/build,也可以匹配到src/current/build。
比如你想要过滤掉所有的txt格式的文件,你可以这么写:
*.txt
比如你想要过滤掉build路径下的所有json文件,你可以这么写:
build/*.json
虽然glob的模式匹配远远不如正则表达式那么强大,但是对于常用的文件匹配的场景来说,它已经足够了。灵活用好这几种规则已经足够可以应付几乎所有场景下的文件ignore了。
我们洋洋洒洒写了这么多,但是其中的关键点只有零碎的几个,学习成本并不高,但是学会了之后可以一劳永逸地解决很多问题,因此我个人觉得它的性价比还是很高的,非常值得一学。
最后,衷心祝愿大家每天都有所收获。如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、关注、转发)
原文链接,求个关注
详解gitignore的使用方法,让你尽情使用git add .相关推荐
- gitignore忽略文件夹_原创 | 详解gitignore的使用方法,让你尽情使用git add .
点击上方蓝字,关注并星标,和我一起学技术. 大家好,欢迎来到周一git专题. 今天和大家聊聊gitignore的作用,其实如果你英文还可以的话,你应该已经基本上猜到它的作用了.ignore在英文当中的 ...
- indesign图片规定在左下角_详解InDesign基本使用方法
详解InDesign基本使用方法 为了使朋友们尽快掌握InDesign的使用方法,下面,我们通过一个例子来说明它的操作过程.做之前,先要说两句.乍一接触Indesign,许多朋友会觉得很不熟悉,很不适 ...
- python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...
前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...
- 处理对象(toString()方法详解和==与equals方法的区别)
处理对象(toString()方法详解和==与equals方法的区别) toString()是一个非常特殊的方法,它是一个自我描述的方法.当程序员直接打印该对象的时候,系统会输出该对象的"自 ...
- python导入模块介绍_详解Python模块导入方法
python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...
- ubuntu 文件权限命令详解使用格式和方法
为什么80%的码农都做不了架构师?>>> 在 Ubuntu Linux 中用源码文件安装软件时经常都会用到chmod命令来更改文件的权限使其在安装时有执行的权限.由于 Ubun ...
- 5 获取窗口位置_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)
前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...
- 详解linux杀死进程方法:kill、pkill、killall之间的区别及用法!
详解linux杀死进程方法:kill.pkill.killall之间的区别及用法! kill 命令 killall 命令 pkill 命令 kill.pkill.killall之间的区别 kill 命 ...
- python expandtabs_详解Python中expandtabs()方法的使用
详解Python中expandtabs()方法的使用 expandtabs()方法返回制表符,即该字符串的一个副本. '\t'已经使用的空间,可选择使用给定的tabsize(默认8)扩展. 语法 以下 ...
最新文章
- 一个简单的缓冲区溢出的思考
- VC++实现任务管理器功能
- 四十、Vue项目上手 | 用户管理系统 实现弹窗,搜索和详细页功能(下篇)
- knockout + easyui = koeasyui
- 本地服务器下的局域网安全吗_本地安全认证服务器
- 【点分治】Tree(luogu 4178/金牌导航 点分治-1)
- NEERC 2012
- 在Android平台上发现新的恶意程序伪装成杀毒软件挟持设备
- sharepoint 2013 sp1 patch安装后的手工运行
- 《MATLAB图像处理375例》——1.3 MATLAB概述
- ESL系统的Docker化部署
- SharePoint 2010 文档管理系列
- 【windows】使用键盘代替鼠标的快捷键
- 为何公众号推送会延迟发送_微信公众号客服消息群发和推送功能如何实现?
- 中华人民共和国消费者权益保护法
- Ubuntu下安装日语输入法
- IDEA更新至2020版后Version Control窗口的还原问题
- C++鼠标锁定或乱跳(坑人必备)
- 深入理解JVM4:内存结构篇(方法区)
- brpc源码分析——线程模型