.gitignore

来源:互联网 发布:气球兵升级数据 编辑:程序博客网 时间:2024/05/18 01:26

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 plaincopyprint?
  1. /Debug  
  2. /RELEASE  
  3. *.ncb  
  4. *.plg  
  5. *.opt  
  6. *.aps  

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

[plain] view plaincopyprint?
  1. /bin/  

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


0 0