zoukankan      html  css  js  c++  java
  • GIT过滤

    git 创建 .gitignore 文件 建立项目过滤规则

    创建 .gitignore 随意设置想跟踪哪些文件 和不跟踪哪些文件. 

    1.在项目根目录下建立 .gitignore 文件

    2.   .gitignore文件过滤有两种模式,开放模式和保守模式
    2.1开放模式负责设置过滤哪些文件和文件夹

    eg:

    过滤文件夹设置:

    /mtk/

    过滤文件设置

    指定过滤某种类型的文件:

    *.zip
    *.rar
    *.via
    *.tmp
    *.err

    指定过滤某个文件:

    /mtk/do.c
    
    /mtk/if.h

    2.2 b保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。

    跟踪某个文件夹

    !/plutommi/mmi

    跟踪某类文件

    !*.c
    
    !*.h

    跟踪某个指定文件

    !/plutommi/mmi/mmi_features.h

    3.配置.gitignore 的简易原则

    采用共享模式与保守模式结合配置的办法。eg:一个文件夹下有很多文件夹和文件,而我只想跟踪其中的一个文件,这样设置就可以满足这种情况,先用共 享模式把整个目录 都设置为不跟踪,然后再用保守模式把这个文件夹中想要跟踪的文件设置为被跟踪,配置很简单,就可以跟踪想要跟踪的文件。

    4.我做mtk项目用到的 .gitignore 文件的具体配置如下:

    #######开放模式############
    
    ###############
    #    folder   #
    ###############
    /_souceInsight_/
    /build/
    /MoDIS/
    /Doc/
    /mtk_lib/
    /scripts/
    /header_temp/
    /tools/AudioResGen/
    /tools/GLBOptionSwtichRef/
    /tools/GMSL/
    /tools/MinGW/
    /tools/MSYS/
    /tools/NewMMIResourceTool/
    /tools/NVRAMStatistic/
    /tst/
    /verno/
    /plutommi/tool/
    /plutommi/Customer/ResGenerator/
    /plutommi/Customer/CustResource/
    /plutommi/Customer/LcdResource/
    /plutommi/Customer/Images/
    /plutommi/mmi/Framework/EventHandling/EventsInc/mmi_menu_handlers.h
    /vendor/font/MTK/official/project/plutommi/content/inc/
    /vendor/font/MTK/official/project/plutommi/content/src/
    
    
    ###############
    #  fixed file #
    ###############
    .gitignore
    *.exe
    *.txt
    *.def
    *.dsp
    *.lib
    *.doc
    *.dll
    *.lnt
    *.pm
    *.xls
    *.dbg
    *.DBG
    *.o
    *.plg
    *.keep
    
    
    ###############
    #  temp file  #
    ###############
    ~*
    *.log
    *.cmm
    *.men
    *.ini
    *.fig
    *.cmp
    *.tmp
    
    ###############
    #    script   #
    ###############
    *.bat
    #########保守模式############
    !/plutommi/Customer/CustResource/PLUTO_MMI/
    !/plutommi/Customer/LcdResource/MainLcd128X160/
    !/plutommi/Customer/Images/PLUTO128X160/image.zip
    !/vendor/font/MTK/official/project/plutommi/content/inc/MainLcd128X160/
    !/vendor/font/MTK/official/project/plutommi/content/src/MainLcd128X160/

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


       在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:

    # 此为注释 – 将被 Git 忽略

    
    
                *.a       # 忽略所有 .a 结尾的文件
                !lib.a    # 但 lib.a 除外
                /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
                build/    # 忽略 build/ 目录下的所有文件

                doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    
    

        这样设置了以后 所有的 .pyc 文件都不会添加到版本库中去。

    
    

        另外 git 提供了一个全局的 .gitignore,你可以在你的用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。

    
    

    需要执行 git config --global core.excludesfile ~/.gitignoreglobal来使得它生效。

    
    

    其他的一些过滤条件

    
    
        * ?:代表任意的一个字符
        * *:代表任意数目的字符
        * {!ab}:必须不是此类型
        * {ab,bb,cx}:代表ab,bb,cx中任一类型即可
        * [abc]:代表a,b,c中任一字符即可

        * [ ^abc]:代表必须不是a,b,c中任一字符

    
    

        由于git不会加入空目录,所以下面做法会导致tmp不会存在 tmp/*             //忽略tmp文件夹所有文件

    
    
        改下方法,在tmp下也加一个.gitignore,内容为
                            *
                            !.gitignore
        还有一种情况,就是已经commit了,再加入gitignore是无效的,所以需要删除下缓存
                            git rm -r --cached ignore_file


    
    

    注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

    
    
        正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
        git update-index --assume-unchanged PATH    在PATH处输入要忽略的文件。

        另外 git 还提供了另一种 exclude 的方式来做同样的事情,不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。

        .gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 可以当作是一个 placeholder 。当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。

  • 相关阅读:
    java多线程(同步与死锁问题,生产者与消费者问题)
    剑指OFFER之跳台阶(九度OJ1388)
    剑指OFFER之二维数组中的查找(九度OJ1384)
    剑指OFFER之旋转数组的最小数字(九度OJ1386)
    我所思考的生活,致半年后的自己
    剑指OFFER之用两个栈实现队列(九度OJ1512)
    剑指OFFER之二维数组中的查找(九度OJ1384)
    剑指OFFER之重建二叉树(九度OJ1385)
    简单的客户机服务器投射模拟
    网络复习之TCP
  • 原文地址:https://www.cnblogs.com/zhangym/p/5660738.html
Copyright © 2011-2022 走看看