转自:http://blog.csdn.net/liuqiaoyu080512/article/details/8648266

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 就行:

          /Debug
      /RELEASE
      *.ncb
      *.plg
      *.opt
      *.aps

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

      /bin/  

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

.gitignore(转载)的更多相关文章

  1. [转]Git忽略规则及.gitignore规则不生效的解决办法

    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: # 此为注 ...

  2. Git 的 .gitignore 配置 转载

    .gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠“/”开头 ...

  3. 【转载】Git忽略规则和.gitignore规则不生效的解决办法

    原文:https://www.cnblogs.com/zhangxiaoliu/p/6008038.html Git忽略规则: 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 ...

  4. .gitignore文件不起作用

    当我们用git时常常会习惯把我们不想上传到远程代码库中的一些本地文件(夹)放在一个叫做.gitignore的文件中,例如常见的本地build文件夹,一些IDE如Intellig,Eclipse的项目管 ...

  5. 用对 gitignore

    使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中.理解 gitignore 的 ...

  6. 【转载】Git的安装与使用

    Git的安装与使用  转载来源:http://www.cnblogs.com/Bonker/p/3441781.html 1,下载git https://code.google.com/p/msysg ...

  7. (转载)Git使用教程

    转载自:http://www.418log.org/post-89.html .什么是Git 简单地说,Git是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的, ...

  8. 深入浅出Git教程【转载】转载

    深入浅出Git教程(转载)   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1 ...

  9. Git忽略已经被版本控制的文件(添加.gitignore不会起作用)

    说明:已经被维护起来的文件(需要被远程仓库控制),即使加入.gitignore也会无济于事. .gitignore只对那些只存在在本地,而不在远程仓库的文件起作用.(untraked file). 操 ...

随机推荐

  1. C语言《一维数组的学习,冒泡排序》

    #include<stdio.h> /* 一维数组的学习,冒泡排序 soulsjie 20170623 */ void main(){ int a[6]; int i,j,k; print ...

  2. two strings

    A1484. two strings(罗干) 时间限制:1.0s   内存限制:256.0MB [问题描述] 给定两个字符串A和B,有五种操作,操作1为在A串开头添加一个字符,操作2为在A串结尾添加一 ...

  3. Rsync文件同步服务器配置

    rsync 是一个Unix/Linux系统下的文件同步和传输工具.rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法.可以用来做备份或镜像.一.配置文件rsync ...

  4. Spring & Java

    Spring & Java https://spring.io/ Spring Boot https://www.shiyanlou.com/courses/1152 Spring Boot入 ...

  5. 创建简单的spring-mvc项目

    1.第一步:创建项目 new—>Dynamic Web Project 项目创建成功后,展示如图: 2.第二步:导入springmvc的jar包和common-logging.jar 3.第三步 ...

  6. Java内存分配与参数传递

    JAVA中方法的参数传递方式只有一种:值传递. JAVA内存分配: 1.栈:存放 基本类型的数据.对象的引用(类似于C语言中的指针) 2.堆:存放用new产生的数据 3.静态域:存放在对象中用stat ...

  7. 遍历ArrayList数组时可能存在的问题

    我们都知道ArrayList类中有个重要的方法是Add(),该方法用于向集合中添加元素,它有一个object类型的参数,表示通过该方法可以向集合中添加任意类型的项,由于ArrayList动态数组中的元 ...

  8. MySQL主从复制搭建教程收集(待实践)

    先收集一下,后续再搭建测试. https://zhangge.net/4019.html http://www.cnblogs.com/jiangwenju/p/6098974.html http:/ ...

  9. 断路器监控(Hystrix Dashboard)

    继上一篇http://www.cnblogs.com/EasonJim/p/7613595.html介绍了断路器之后,其实它还提供了一个管理页面来监控这些应用的调用数据. 首先,我是基于上一个例子Zo ...

  10. JAVA 流程控制之选择语句

    在程序设计时,有三种基本技术可以改变程序的流程控制: 调用方法: 选择: 循环. 在这里,我们主要来讲讲选择语句. JAVA中的选择语句与C语言中的基本相同,包括: if 语句: if/else 语句 ...