相关知识参考资料:

  1. 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(推荐)

  2. https://blog.csdn.net/killsamaritan/article/details/53510999

  3. https://blog.csdn.net/qq_26341621/article/details/54944250

以下怕看着乱的话看另外一个文章,单独列出来了: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的忽略提交规则的更多相关文章

  1. Python - Git仓库忽略提交规则 & .gitignore配置

    Git 忽略文件提交的方法 有三种方法可以实现忽略Git中不想提交的文件. 在Git项目中定义 .gitignore 文件 这种方式通过在项目的某个文件夹下定义  .gitignore 文件,在该文件 ...

  2. Git忽略提交规则

    Git忽略提交规则 转自:https://www.cnblogs.com/kevingrace/p/5690241.html 在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等 ...

  3. Git忽略提交规则 - .gitignore配置运维总结

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  4. [转]Git忽略提交规则 - .gitignore配置运维总结

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  5. Git忽略提交规则 .gitignore文件

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  6. git设置忽略提交文件

    直接在idea进行操作 1.找到想要忽略提交的文件,点击右键,然后如下操作: 2.然后就会发现被忽略的文件名变成了灰色,在项目最下方会生成ignore文件夹 3.文件夹内可以看到我们忽略的文件 4.注 ...

  7. Git之忽略提交 .gitignore

    1.touch .gitignore  创建忽略文件,若此文件已存在,请忽略这一步 2.vi .gitignore   编辑忽略文件,将需要忽略的文件添加到忽略文件中 3.git status 发现忽 ...

  8. 谈谈Git的忽略规则.gitignore

    对于经常使用Git的朋友来说,.gitignore配置一定不会陌生. 今天就来说说这个.gitignore的使用. 首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“. ...

  9. git正确的删除远程仓库的文件并用.gitignore忽略提交此文件

    我向远程仓库提交了如下文件src/ pom.xml target/ WebContent/,发现没必要提交target目录. 于是做了如下操作: git rm -r --cached target g ...

随机推荐

  1. react 使用react-router-dom 在Route对象上component 参数接收的是一个方法而非一个对象

    其实对于jsx语法 一直觉的它有点清晰都不是很好,js和html混在一起有点不伦不类的样子,以下是我在使用react中遇到的一个很奇葩的事情 假定你定义了一个component Mine import ...

  2. leetcood学习笔记-54-螺旋矩阵

    题目描述: 第一次提交: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: j,x = 0 ...

  3. mysql 两张表取总合 和差集

    SELECT id AS kid, NAME, IF (t1.kpi, t1.kpi, 0) AS kpi, t1.sort, STATUS, t1.kpi_idFROMform_kpi_nameLE ...

  4. twentytwenty插件,图片对比轮播

    https://zurb.com/playground/twentytwenty 项目应用 http://decortrim.mml.digital/

  5. Kotlin Hello World

    { https://github.com/zhmmmm/Kotlin }

  6. 【转】Git 修改已提交的commit注释

    https://www.jianshu.com/p/098d85a58bf1 [重点] 通过git rebase -i HEAD~2 你想修改哪条注释 就把哪条注释前面的pick换成edit git ...

  7. JavaScript做个时间表 Date()

    <span id="shiji"></span><script> window.setInterval("time()",5 ...

  8. 几道51nod上据说是提高组难度的dp题

    1409 加强版贪吃蛇 听着懵逼做着傻逼. 每个格子只能经过一次,穿过上下界答案清0,不考虑穿的话就随便dp.如果要穿就是从尽可能上面的位置穿过上界,尽可能下面的位置穿过下界. 那么转移这一列之前找一 ...

  9. CSS:CSS 总结

    ylbtech-CSS:CSS 总结 1.返回顶部 1. 你已经学习了CSS,下一步学习什么呢? CSS 总结 本教程已向你讲解了如何创建样式表来同时控制多重页面的样式和布局. 你已经学会如何使用 C ...

  10. bash数组总结

    bash数组操作 bash支持两种数组,一种是索引数组,一种是关联数组 索引数组 数组的值类型是任意的,索引也未必一定要连续,当做列表理解更好 下面总结下索引数组,即列表: 1. 声明 declare ...