整體目錄結構
foo
bar
lst
aa.c
bb.c
cc.c
h.c
i.c
11.txt
d.c
e.c
a.c
b.c
c.c
幾點說明
所有的檢查都相對於.gitignore文件位置的路徑名的匹配,無論開頭加不加/
配置語法連續的星號**/開頭可以匹配所有的目錄(也就是相對路徑)
**/lst 匹配lst目錄下的所有內容
如果以/結尾, 則匹配目錄或者路徑,也就指定目錄(不區分絕對相對)
lst/ 跟上個例子是等價的
如果包含/
*通配多個任意字符/除外 { 所以/*.c並不能匹配root/foo/sha.c> }
?通配單個任意字符/除外
如果不包含/,則匹配文件
*通配多個任意字符 { 所以*.c匹配所有的c文件}
?通配單個任意字符
通用語法
以#開頭表示註釋
以方括號[0-9a-z]匹配所選範圍中的一個字符(不區分大小寫)
以!表示不忽略匹配到的文件或目錄
此外,git 對於.gitignore配置文件是按行從上到下進行規則匹配的,意味着如果前面的規則匹配的範圍更大,則後面的規則將不會生效;!語法除外。
示例
規則:!.gitignore
說明:不忽略.gitignore文件
規則:*.c
說明:忽略所有的.c文件
規則:bar/
說明:忽略所有bar目錄下的所有內容
規則:**/bar/*.c
說明:忽略bar目錄下的所有的點c文件,不包括子目錄
規則:bar/*.c
說明:匹配根目錄下的bar目錄裏的所有c文件, 注意這裏必須與例子3進行區分,不以/結尾
建議
基本上記住以上幾點就夠用了,不是很多。記不住的話 ,配置忽略配置的時候,翻開這篇文章看看,就可以找到解決方案了。