详解Git中的.gitignore文件
1.什么是.gitignore文件?有什么作用?
在Git中,有一种特殊的文件,其文件全名就是 .gitignore,这个文件可以用txt打开,主要功能是屏蔽某些文件,使得这些文件不被追踪(tracked),自然push后也不会上传到github等平台。
2.有什么规则?
(1)# content
开头以'#’的行在.gitignore中起注释作用,所以'#’后的content在.gitignore中不起任何作用。
(2)/ToDo
以'/'开头的表示仅屏蔽当前文件夹ToDo下的文件。需要注意的是空文件夹不会被追踪。
|--.gitignnore
|--ToDo--test0.txt
|--TooDo--|---ToDo--test1.txt
|--TDoo
|--testGit.txt
|--license.txt
在上述文档结构下,test0.txt将被屏蔽,test1.txt不会被屏蔽,即显示TooD未被追踪,TDoo由于是空文件夹,所以也不会被追踪,而testGit.txt和license.txt已被提交,所以也不是未被追踪。
验证如下:
(3)ToDo/
以'/'结尾的表示屏蔽所有名为ToDo文件夹下的文件下的文件都会被屏蔽。
|--.gitignnore
|--ToDo--test0.txt
|--TooDo--|---ToDo--test1.txt
|--TDoo
|--testGit.txt
|--license.txt
在上述文档结构下,test0.txt和test1.txt均会被屏蔽,即没有被追踪的,而testGit.txt和license.txt已被提交,所以也不是未被追踪。
验证如下:
(4)!a.a
忽略a.a,即对a.a也追踪,一般搭配*.a,而*.a解释见下面一条。
(5)*.a
屏蔽所有扩展名为a的文件,如1.a, 2.a等。
|--.gitignnore
|--ToDo--test0.txt
|--TooDo--|---ToDo--test1.txt
|--TDoo--2.a
|--1.a
对如上文档结构,由于屏蔽了1.a, 2.a所以追踪到test0.txt和test1.txt,即追踪ToDo,TooD文件夹。
(6)*.[abc]
屏蔽所有扩展名为a,或者b或者c的文件。
|--.gitignnore
|--ToDo--test0.txt
|--TooDo--|---ToDo--test1.txt
|--TDoo--2.b
|--1.a
对如上文档结构,由于屏蔽了1.a, 2.b所以追踪到test0.txt和test1.txt,即追踪ToDo,TooD文件夹。
验证如下:
(7)*.a?
屏蔽所有扩展名以a开头,且扩展名只有2个字符的文档。?表示一个字符
|--.gitignnore
|--ToDo--5.abc
|--TooDo--|---ToDo--6.a
|--TDoo--4.ab
|--1.a
|--2.ab
|--3.abc
在上述文档结构中,2.ab,4.ab被屏蔽,其他的都被追踪。
(8)[0-9].txt
屏蔽0.txt,1.txt,2.txt...9.txt。
(9)doc/**/*.p
屏蔽doc下所有扩展名为p的文件。**表示嵌套路径,即doc下的多层路径。
|--.gitignore
|--5.p
|--doc|--1.p
|--TDoo--4.p
|--ToDo--3.p
|--TooD--ToDo--2.p
在如上文档结构中,1.p,3.p,4.p被屏蔽,5.p由于不在doc文件下,被追踪。