一、为什么使用".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中了。
# -- 开放模式 -- vincent
# -- 文件夹
/target/
/build/
/Doc/
/tst/
/RemoteSystemTempFiles/
# -- 固定文件
.gitignore
*.exe
*.project
*.tern-project
*.classpath
*.setting
# -- 临时文件(脚本文件)
*.log
如上,是我的项目中,设置的将会被过滤掉的文件类型。而且注意:.
gitignore只适用于尚未添加到Git库的文件。如果已经添加了,则需用git rm移除后再重新commit。
这个时候,上述这些文件就永远不会被上传到git仓库了。
Attention:
有一种特殊的情况:“一个文件夹"My Photos"下有很多文件夹和文件,而我只想跟踪其中的一个文件"celine_and_me.png”,这个时候怎么办?
这个时候,就要用到开放模式和保守模式相互结合的方式了。
#先把"My Photo"下的所有文件屏蔽
/My Photos/
#再把其中的"celine_and_me.png"放开
!celine_and_me.png
如上代码所示,就实现了我需要的功能。
从本质上讲,开放或者共享两种模式,更多的就是对范围的控制,这样就理解清楚了。
That's all.(今天去游泳,胳膊有点酸酸的,就写写博客吧 ^ v ^)