并非所有项目中的文件都希望被跟踪提交,例如以下几种:
(1).存放密码等比较私密内容的文件。
(2).程序编译所产生的中间文件或暂存文件。
达成上述目的,只需要在项目根目录下配置.gitignore文件,使其忽略跟踪指定文件即可。还有另外两种实现忽略指定文件的方式,本文只介绍在项目根目录下添加.gitignore文件这一种,最为常用。
一. 创建.gitignore文件:
首先要特别注意,文件的全称就是.gitignore(一个点+gitignore)
二.忽略规则:
(1).文件中的空行会被忽略,可以用来作为分隔美化格式。
(2).以#开头的行用作注释,不会作为忽略规则。
(3).可以有限的采用正则表达式,星号(*)表示任意多个字符,问号(?)表示任意一个字符,方括号[abc]表示其中任意一个字符,大括号({string1,string2,string3})表示其中的任意一个字符串。
(4).以斜杠开头表示根目录,比如/test.txt表示根目录下test.txt文件。
(5).以斜杠结尾,表示一个目录,a/表示a目录下所有文件(无论是否根目录),/a/表示根目录下的a目录中所有文件。
(6).一叹号(!)开头表示此类文件不被忽略。
三.实例分析:
(1).实例一:
1 2 3 4 |
|
上面规则比较简单不多分析。
(2).实例二:
1 2 |
|
分析如下:
(1).第一行规定忽略根目录下的ant目录下的所有文件。
(2).第二行规定不忽略对应目录下的test.txt文件。
如果没有叹号(!)这个用法,想要实现上述功能,只能挨个忽略ant目录下除去test.txt之外的文件。
四. 为什么规则没有生效:
现在.gitignore文件的规则内容如下:
1 |
|
忽略readme.txt文件,现在修改readme.txt文件,然后查看一下状态:
规则已经规定要忽略readme.txt文件了,但是为什么readme.txt依然处于跟踪状态。
这是因为忽略readme.txt规则是后来添加的,规则是这样的:规则只能对尚未被track跟踪的文件有效。
只要再将readme.txt设置为未跟踪状态即可生效:
1 |
|
将其从暂存区删除,这时候文件处于未跟踪状态,这时候Git已经不能跟踪它: