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文件下,被追蹤。

