【Git之窗】(七).gitignore

一、为什么使用".gitignore"?

       先看图:

    、

     

      如上图所示,每次修改代码执行“git status”命令之后,就会看到如上这样的Console Line代码,在公司的时候当时有人负责管理可以被上传的文件类型,我自己在电脑上玩同样遇到了问题,类似于临时文件、配置文件、target文件等这些东西,我不能然他们push上去,一旦协同开发,就会出现频繁的改动以及Push操作,很烦人,所以,这就是为什么要设置.gitignore。

 

二、宏观介绍

      继续看图:

   

       如图所示,是我今天抽时间总结的关于.ignore的内容(XMind导图今天传不上去)。

       

       一、分类

      (1)开放模式 -- 即全局过滤机制,对所有的git都适用。

      (2)保守模式 -- 即对某个项目使用的过滤规则。

       两种ignore模式,使得.gitignore的使用可以将两种模式混搭起来,对于共性的临时文件、配置文件、目标文件,可以忽略;对特定的项目里的特定文件,可以特别去做限制,灵活性上,相比于其他CVS的这一点,Git做的非常棒。

 

      二、原理

       .gitignore的原理即允许文件是否被git追踪,在使用git的时候,当写"git add - 文件"的时候,会使得没有被git仓库追踪的文件被它追踪,我习惯使用“git add -A”命令,每次将所有的新文件被git仓库追踪,但是这样的话,一些本不该放到git仓库的文件就被放了进来,.gitignore的原理就是在追踪的阶段就阻止了一些文件不被追踪,后面“提交”和“推送”阶段,就根本不会走。 

 

      三、写法

      常见的几种写法

     (1)#  此为注释,即被git忽略

     (2)*.a  此为忽略所有.a结尾的文件

     (3)!taotao.dao 表示taotao.dao这个文件将会被git追踪

     (4)/tmp  仅仅忽略项目根目录下的tem文件,其他地方的例如src/tmp下的文件不会被忽略掉

     (5)target/ 忽略target目录下的所有文件

     (6)doc/*.txt  忽略doc目录下一层中的以.txt为后缀的文件,但是doc下两级以及多级中的.txt文件不会被忽略

 

      四、如何配置

      因为我的Git Bash用的是windows版本,所以我讲解windows版本下的操作方法:

      (1)在本地仓库中打开git bash,输入:

         

        如上,就会在本地仓库下新建一个.ignore的文件。

 

       (2)用记事本或者Notepad++编辑.ignore文件

        这里列举taotao商城里的几个问题,如图:

     

        这是"taotao-manager-web"下的文件目录,这里可见,除了"src"和“pom.xml”是值得我上传到git上去的,别的都不必被git追踪,那就需要将其设置到gitignore中了。

 

[plain] view plain copy
 
  1. # -- 开放模式  -- vincent  
  2. # -- 文件夹     
  3. /target/  
  4. /build/  
  5. /Doc/  
  6. /tst/  
  7. /RemoteSystemTempFiles/   
  8.   
  9. # -- 固定文件  
  10. .gitignore  
  11. *.exe  
  12. *.project  
  13. *.tern-project  
  14. *.classpath  
  15. *.setting  
  16.   
  17. # -- 临时文件(脚本文件)  
  18. *.log  

      如上,是我的项目中,设置的将会被过滤掉的文件类型。而且注意:.gitignore只适用于尚未添加到Git库的文件。如果已经添加了,则需用git rm移除后再重新commit。
      这个时候,上述这些文件就永远不会被上传到git仓库了。

 

      Attention:

      有一种特殊的情况:“一个文件夹"My Photos"下有很多文件夹和文件,而我只想跟踪其中的一个文件"celine_and_me.png”,这个时候怎么办?

      这个时候,就要用到开放模式和保守模式相互结合的方式了。

 

[plain] view plain copy
 
  1. #先把"My Photo"下的所有文件屏蔽  
  2. /My Photos/  
  3.   
  4. #再把其中的"celine_and_me.png"放开  
  5. !celine_and_me.png  

      如上代码所示,就实现了我需要的功能。

      从本质上讲,开放或者共享两种模式,更多的就是对范围的控制,这样就理解清楚了。

 

     That's all.(今天去游泳,胳膊有点酸酸的,就写写博客吧 ^ v ^)

posted on 2018-01-09 20:19  myworldworld  阅读(195)  评论(0)    收藏  举报

导航