Git的忽略提交规则
相关知识参考资料:
https://git-scm.com/book/zh/v2/Git-基础-记录��% 8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93(推荐)
https://blog.csdn.net/killsamaritan/article/details/53510999
以下怕看着乱的话看另外一个文章,单独列出来了:git忽略提交规则
的.gitignore只会对没有被跟踪的,即没有被添加的文件进行忽略。
的.gitignore的文件使用方法
首先,在你的工作区新建一个名称为的.gitignore的文件。
然后,把要忽略的文件名填进去,GIT中就会自动忽略这些文件。
不需要从头写的.gitignore文件,GitHub的已经为我们准备了各种配置文件,只需要组合一下就可以使用了。
有时对于git项目下的某些文件,我们不需要纳入版本控制,比如日志文件或者IDE的配置文件,此时可以在项目的根目录下建立一个隐藏文件.gitignore(linux下以。开头的文件都是隐藏文件),然后在的.gitignore中写入需要忽略的文件。
[root@kevin ~]# cat .gitignore
*.xml
*.log
*.apk
.gitignore注释用’#’,*表示匹配0个或多个任意字符,所以上面的模式就是要忽略所有的xml文件,日志文件和apk文件。
的.gitignore配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为版本管理带来很大的便利。
的.gitignore规则忽略优先的级
在.gitingore文件中,每一行指定一个忽略规则,GIT中检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
1)从命令行中读取可用的忽略规则
2)当前目录定义的规则
3)父级目录定义的规则,依次递推
4)$ GIT_DIR / info / exclude文件中定义的规则
5)core.excludesfile中定义的全局规则
.gitignore忽略规则的匹配语法
在.gitignore文件中,每一行的忽略规则的语法如下:
1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2)以“ # ”开头的行都会被GIT中忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。
3)可以使用标准的水珠模式匹配。所谓的圆顶封装模式是指壳所使用的简化了的正则表达式。
4 )以斜杠“ / ” 开头表示目录;“/”结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;“/”开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前.gitignore文件路径的内容,如果该模式不在.gitignore文件中,则相对于项目根目录
.5)以星号“ * ”通配多个字符,即匹配多个任意字符;使用两个星号“ ** ”表示匹配任意中间目录,比如a / ** / z可以匹配a / z,a / b / z或a / b / c / z等。
6)以问号“ ? ”通配单个 符,即匹配一个任意字符;
7)以方括号” []“包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符比如[ABC]表示要么匹配一个一个,要么匹配一个B,要么匹配一个C。;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[az]表示匹配任意的小写字母)
.8)以叹号“ !“表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号取反需要特别注意的是(!):如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用! “”规则是不起作用的。也就是说“!”开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用“!”也不会再次被包含。可以使用反斜杠进行转义。
需要谨记:混帐对于.IGNORE配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。
混帐忽略规则(的.gitignore配置)不生效原因和解决
.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。
原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,
这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。
解决方法:git清除本地缓存(改变成未track状态),然后再提交:
[root@kevin ~]# git rm -r --cached .
[root@kevin ~]# git add .
[root@kevin ~]# git commit -m ‘update .gitignore’
需要特别注意的是:
1).gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
2)想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,
对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。
在使用的.gitignore后文件删除如何远程仓库中以前上传的此类文件而保留本地文件
在使用的git和github上的时候,之前没有写的.gitignore文件,就上传了一些没有必要的文件,在添加了的.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用“git rm directory”,这样会删除本地仓库的文件。可以使用“ git rm -r -cached directory ”来删除缓冲,然后进行“ commit ”和“ push ”,这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用“ git add -A ”来添加修改的内容,上传的文件就会受到的.gitignore文件的内容约束。
额外说明:git库所在的文件夹中的文件大致有4种状态
Untracked:
未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify:
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,
而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified:
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged:
暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
执行git reset HEAD filename取消暂存, 文件状态为Modified
Git 状态 untracked 和 not staged的区别
1)untrack 表示是新文件,没有被add过,是为跟踪的意思。
2)not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思
Git的忽略提交规则的更多相关文章
- Python - Git仓库忽略提交规则 & .gitignore配置
Git 忽略文件提交的方法 有三种方法可以实现忽略Git中不想提交的文件. 在Git项目中定义 .gitignore 文件 这种方式通过在项目的某个文件夹下定义 .gitignore 文件,在该文件 ...
- Git忽略提交规则
Git忽略提交规则 转自:https://www.cnblogs.com/kevingrace/p/5690241.html 在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等 ...
- Git忽略提交规则 - .gitignore配置运维总结
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...
- [转]Git忽略提交规则 - .gitignore配置运维总结
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...
- Git忽略提交规则 .gitignore文件
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...
- git设置忽略提交文件
直接在idea进行操作 1.找到想要忽略提交的文件,点击右键,然后如下操作: 2.然后就会发现被忽略的文件名变成了灰色,在项目最下方会生成ignore文件夹 3.文件夹内可以看到我们忽略的文件 4.注 ...
- Git之忽略提交 .gitignore
1.touch .gitignore 创建忽略文件,若此文件已存在,请忽略这一步 2.vi .gitignore 编辑忽略文件,将需要忽略的文件添加到忽略文件中 3.git status 发现忽 ...
- 谈谈Git的忽略规则.gitignore
对于经常使用Git的朋友来说,.gitignore配置一定不会陌生. 今天就来说说这个.gitignore的使用. 首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“. ...
- git正确的删除远程仓库的文件并用.gitignore忽略提交此文件
我向远程仓库提交了如下文件src/ pom.xml target/ WebContent/,发现没必要提交target目录. 于是做了如下操作: git rm -r --cached target g ...
随机推荐
- C++11 auto 与 右值
auto: auto T = xxx; // 产生一个变量,自动推导变量类型. 存在变量拷贝的消耗.auto& T = xxx; // 产生一个变量的引用,自动推导变量类型.减少拷贝的消耗. ...
- 基本TCP Sockets编程
一.socket 函数 #include <sys/socket.h> int socket (int family, int type, int protocol); Returns: ...
- elementUI+JS实现全选与反选
在实际项目开发过程中,遇到的需求,需要实现全选以及取消全选等功能,主要使用ElementUI + JS来实现,具体代码如下: <!DOCTYPE html> <html lang=& ...
- Tomcat服务器优化(内存,并发连接数,缓存)
a) 内存优化:主要是对Tomcat启动参数进行优化,我们可以在Tomcat启动脚本中修改它的最大内存数等等.b) 线程数优化:Tomcat的并发连接参数,主要在Tomcat配置文件中server.x ...
- 【锁】Innodb锁
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我们先介绍一点背景知识 ...
- thinkphp 数据库缓存
默认的数据库驱动位于Think\Db\Driver命名空间下面,驱动类必须继承Think\Db类,每个数据库驱动必须要实现的接口方法包括(具体参数可以参考现有的数据库驱动类库): 驱动方法 方法说明 ...
- Python 让文件代码支持汉字
默认使用ASCII编码,改成utf8 #!/usr/bin/env python # -*- coding:utf8 -*- #coding:utf-8
- Linux命令(1):date
查看时间: date "+%Y-%m-%d %H:%M:%S" 参数说明: %n : 下一行 %t : 跳格 %H : 小时(00..23) %I : 小时(01..12) %k ...
- 牛客多校第七场 C Governing sand 线段树
题意: 有一个树林,树林中不同种类的树有不同的数量,高度,砍伐它们的价格.现在要求砍掉一些树,使得高度最高的树占剩下的树的总数的一半以上,求最小花费. 题解: 用线段树维护不同种类树的信息,叶子节点从 ...
- Qt无边框窗口的移动、拉伸边框、鼠标滚轮缩放大小
主要是处理窗口上鼠标的几个事件,具体代码请看下面的截图, 完整代码的下载链接在此:http://download.csdn.net/detail/beyond0824/9657110, 本示例代码中, ...