zoukankan      html  css  js  c++  java
  • gitignore规则探究

    PS:转自https://blog.csdn.net/o07sai/article/details/81043474

    网上有好多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: 刚才在网上发现有大神提出 ** 表示任意层级目录,我就试了一下:

  • 相关阅读:
    IT资产管理系统SQL版
    反转单词(C#实现)
    删除数组中重复的元素(C#实现)
    最大子数组之和(C#实现)
    判断是否是三角形
    如何解决SSAS + SSRS + WSS3.0 之间的Windows 集成验证问题
    关于SharpDevelop
    规划一个SharePoint的解决方案
    Scalability Design
    合作意味着分享
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/10703654.html
Copyright © 2011-2022 走看看