.gitignore

git 可以管理所有文件的变更, 但并不是所有文件都有意义。

大部分二进制文件没有意义

  比如说 VC 工程的 Debug 和 Release 文件夹下的文件, 或者 java 项目的 bin 文件夹中的 class 文件, 这些文件都是基于源代码生成的, 只要有源代码就能生成出来,所以版本管理的时候应该忽略它们。

有些文本文件也没有意义

  比如说 VC 工程中的 .plg 文件, 它是个 html 格式的文本文件, 保存了编译后产生的 error 和 warning, 显然没有进行版本管理的必要。

有些二进制文件不能忽略

  比如说 MFC 工程的 res\Toolbar.bmp, 是工具栏的位图文件,二进制文件, 如果忽略,工程就不完整了,别人 clone 你的版本库后用不了。 而这些文件一般不频繁变更,进行版本管理也不浪费空间。

  总之,能从别的文件生成的文件就应该被忽略。 要忽略这些文件,一般在 .gitignore 中设置规则, 如下是一篇对 .gitignore 介绍得很好的文章(转自 git 创建 .gitignore 文件 建立项目过滤规则):

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

  2. .gitignore文件过滤有两种模式,开放模式和保守模式

    1. 开放模式负责设置过滤哪些文件和文件夹,eg:

      过滤文件夹设置:

      /mtk/       表示过滤这个文件夹
      

      过滤文件设置

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

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

      指定过滤某个文件:

      /mtk/do.c
      /mtk/if.h
      
    2. 保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。 跟踪某个文件夹

      !/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/
    

.gitignore 不支持正则表达式,但是也基本够用了。

一般 VC 在工程根目录下设置如下 .gitignore 就行:

[plain] view plain copy print ?
  1. /Debug  
  2. /RELEASE  
  3. *.ncb  
  4. *.plg  
  5. *.opt  
  6. *.aps  

eclipse 在项目根目录下设置如下 .gitignore 就行:

[plain] view plain copy print ?
  1. /bin/  

需要注意的是:.gitignore 中的规则只对 未提交 且 未缓存 的文件有效。因此,如果在"未缓存的改动"中发现有需要忽略的文件, 马上修改 .gitignore,再重新扫描就会发现该文件被忽略了。


你可能感兴趣的:(.gitignore)