1、什麼是 gitignore
git是一個版本控制工具,不過在工作目錄中,並不是所有的文件都是需要做版本控制的,比如說編譯產生的字節碼文件,這種文件是不需要做版本管理,也不需要上傳到github中的,但是我們又不想每次上傳的時候手動刪除這些文件,於是就有了gitignore文件,記錄在文件中每一行都是一個規則,git根據這個規則,決定哪些文件做版本控制,這樣我們就可以選擇性的決定哪些文件做版本控制。
2、gitignore的語法
標識 | 描述 |
---|---|
空白行 | 不匹配文件 |
# | 表示註釋 |
\ | 轉義字符,如果在#前面放,則表示一個字符,而非註釋 |
\空格 | 轉義空格 |
! | 表示不匹配的規則,也就是此規則下的文件將會被追蹤 |
\! | 放在開頭表示轉義!,僅表示!字符 |
? | 匹配單個字符 |
* | 匹配任意多個字符 |
** | 匹配任意目錄深度 |
[123] | 匹配其中的一個字符 |
[1-9] | 匹配1到9中的一個 |
3、gitignore實例
當文件或文件夾匹配到gitignore
文件中的規則時,git將不會對這些文件/文件夾進行版本管理。
3.1 空文件夾
默認空文件夾不會被匹配
3.2 全局文件/文件夾匹配
abc
會匹配工作空間中所有名爲abc
的文件和文件夾
abc/
匹配全局所有的名爲abc
的文件夾,但是名爲abc
的文件不會被匹配到
*abc
匹配全局所有的末尾字符爲abc
的文件和文件夾
*abc/
匹配全局所有的末尾字符爲abc
的文件夾
**/abc
匹配全局所有的名爲abc
的文件和文件夾
**/abc/
匹配全局所有的名爲abc
的文件夾
**/a[bc]/
匹配全局所有的名爲ab
, ac
的文件夾
3.3 局部匹配
/abc
匹配項目根目錄名爲abc
的文件和文件夾
/abc/
匹配項目根目錄名爲abc
的文件夾
/abc/*
/abc/**
匹配abc
目錄下所有文件和文件夾
abc/bcd
匹配根目錄中abc
目錄下名爲bcd
的文件和文件夾
abc/bcd/
匹配根目錄中abc
目錄下名爲bcd
的文件夾
a/**/b
匹配全局所有的形式如上的文件和文件夾,例如a/f/b
, a/y/b/
a/**/b/
匹配全局所有的形式如上的文件夾,文件會忽略
/a/**/b
從根目錄開始,先匹配根目錄下的文件夾a
,然後匹配全局所有的形式如上的文件和文件夾,例如a/f/b
, /a/y/b/
/a/**/b/
從根目錄開始,先匹配根目錄下的文件夾a
,然後匹配全局所有的形式如上的文件夾,例如a/f/b
, /a/y/b/
3.4 帶空格的文件名與路徑匹配
如果一個文件文件名中帶有空格,需要使用\
轉義
\space+文件名
路徑同理
3.5 不匹配規則
上面的規則,如果前面加上!
,則表示哪些文件或文件夾需要被git進行版本管理,常見的用法如下:
/abc/**
!/abc/name.txt
第一句,我們將/abc
下的所有文件匹配到,git將忽略這些文件、文件夾,不過第二句表示git將會對/abc/name.txt
文件進行版本管理。
特別注意:git讀取規則的時候是從上往下的,所以說,忽略匹配一定要在匹配規則之後纔會生效!
4、相關資料與鏈接
git官方解釋文檔 : gitignore
pro git 中文版: Pro Git v2
git官方實例文件: github官方實例