并非所有项目中的文件都希望被跟踪提交,例如以下几种:

(1).存放密码等比较私密内容的文件。

(2).程序编译所产生的中间文件或暂存文件。

达成上述目的,只需要在项目根目录下配置.gitignore文件,使其忽略跟踪指定文件即可。还有另外两种实现忽略指定文件的方式,本文只介绍在项目根目录下添加.gitignore文件这一种,最为常用。

一. 创建.gitignore文件:

首先要特别注意,文件的全称就是.gitignore(一个点+gitignore)

go fresh 忽略某个文件夹_txt文件

二.忽略规则:

(1).文件中的空行会被忽略,可以用来作为分隔美化格式。

(2).以#开头的行用作注释,不会作为忽略规则。

(3).可以有限的采用正则表达式,星号(*)表示任意多个字符,问号(?)表示任意一个字符,方括号[abc]表示其中任意一个字符,大括号({string1,string2,string3})表示其中的任意一个字符串。

(4).以斜杠开头表示根目录,比如/test.txt表示根目录下test.txt文件。

(5).以斜杠结尾,表示一个目录,a/表示a目录下所有文件(无论是否根目录),/a/表示根目录下的a目录中所有文件。

(6).一叹号(!)开头表示此类文件不被忽略。

三.实例分析:

(1).实例一:

# 这是注释
/ant/ # 忽略根目录下ant目录下所有文件
*.txt # 忽略所有的文本文件
softwhy/do.c #忽略softwhy目录下所有do.c文件

上面规则比较简单不多分析。

(2).实例二:

/ant/
!/ant/test.txt

分析如下:

(1).第一行规定忽略根目录下的ant目录下的所有文件。

(2).第二行规定不忽略对应目录下的test.txt文件。

如果没有叹号(!)这个用法,想要实现上述功能,只能挨个忽略ant目录下除去test.txt之外的文件。

四. 为什么规则没有生效:

现在.gitignore文件的规则内容如下:

readme.txt

忽略readme.txt文件,现在修改readme.txt文件,然后查看一下状态:

go fresh 忽略某个文件夹_git_02

规则已经规定要忽略readme.txt文件了,但是为什么readme.txt依然处于跟踪状态。

这是因为忽略readme.txt规则是后来添加的,规则是这样的:规则只能对尚未被track跟踪的文件有效。

只要再将readme.txt设置为未跟踪状态即可生效:

$ git rm readme.txt --cached

将其从暂存区删除,这时候文件处于未跟踪状态,这时候Git已经不能跟踪它:

go fresh 忽略某个文件夹_git_03