git 配置忽略文件規則

工作區新建一個名稱為.gitignore的文件。

然后,把要忽略的文件名填進去,Git就會自動忽略這些文件。

有時對于git項目下的某些文件,我們不需要納入版本控制,比如日志文件或者IDE的配置文件,此時可以在項目的根目錄下建立一個隱藏文件 .gitignore(linux下以.開頭的文件都是隱藏文件),然后在.gitignore中寫入需要忽略的文件。

.gitignore注釋用'#', *表示匹配0個或多個任意字符

.gitignore忽略規則的優先級

在 .gitingore 文件中,每一行指定一個忽略規則,Git檢查忽略規則的時候有多個來源,它的優先級:

1)從命令行中讀取可用的忽略規則

2)當前目錄定義的規則

3)父級目錄定義的規則,依次遞推

4)$GIT_DIR/info/exclude 文件中定義的規則

5)core.excludesfile中定義的全局規則

.gitignore忽略規則的匹配語法

在 .gitignore 文件中,每一行的忽略規則的語法如下:

1)空格不匹配任意文件,可作為分隔符,可用反斜杠轉義

2)以“”開頭的行都會被 Git 忽略。即#開頭的文件標識注釋,可以使用反斜杠進行轉義。

3)可以使用標準的glob模式匹配。所謂的glob模式是指shell所使用的簡化了的正則表達式。

4)以斜杠"/"開頭表示目錄;"/"結束的模式只匹配文件夾以及在該文件夾路徑下的內容,但是不匹配該文件;"/"開始的模式匹配項目跟目錄;如果一個模式不包含斜杠,則它匹配相對于當前 .gitignore 文件路徑的內容,如果該模式不在 .gitignore 文件中,則相對于項目根目錄。

5)以星號"*"通配多個字符,即匹配多個任意字符;使用兩個星號"**" 表示匹配任意中間目錄,比如`a/**/z`可以匹配 a/z, a/b/z 或 a/b/c/z等。

6)以問號"?"通配單個字符,即匹配一個任意字符;

7)以方括號"[]"包含單個字符的匹配列表,即匹配任何一個列在方括號中的字符。比如[abc]表示要么匹配一個a,要么匹配一個b,要么匹配一個c;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內的都可以匹配。比如[0-9]表示匹配所有0到9的數字,[a-z]表示匹配任意的小寫字母)。

8)以嘆號"!"表示不忽略(跟蹤)匹配到的文件或目錄,即要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。需要特別注意的是:如果文件的父目錄已經被前面的規則排除掉了,那么對這個文件用"!"規則是不起作用的。也就是說"!"開頭的模式表示否定,該文件將會再次被包含,如果排除了該文件的父級目錄,則使用"!"也不會再次被包含。可以使用反斜杠進行轉義。

.gitignore忽略規則簡單說明

#?????????????? 表示此為注釋,將被Git忽略

*.a???????????? 表示忽略所有 .a 結尾的文件

!lib.a????????? 表示但lib.a除外

/TODO?表示僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO

build/????????? 表示忽略 build/目錄下的所有文件,過濾整個build文件夾;

doc/*.txt?????? 表示會忽略doc/notes.txt但不包括 doc/server/arch.txt

bin/:?????????? 表示忽略當前路徑下的bin文件夾,該文件夾下的所有內容都會被忽略,不忽略 bin 文件

/bin:?????????? 表示忽略根目錄下的bin文件

/*.c:?????????? 表示忽略cat.c,不忽略 build/cat.c

debug/*.obj:??? 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj

**/foo:???????? 表示忽略/foo,a/foo,a/b/foo等

a/**/b:???????? 表示忽略a/b, a/x/b,a/x/y/b等

!/bin/run.sh??? 表示不忽略bin目錄下的run.sh文件

*.log:????????? 表示忽略所有 .log 文件

config.php:???? 表示忽略當前路徑的 config.php 文件

/mtk/?表示過濾整個文件夾

*.zip?????????? 表示過濾所有.zip文件

/mtk/do.c?????? 表示過濾某個具體文件

被過濾掉的文件就不會出現在git倉庫中(gitlab或github)了,當然本地庫中還有,只是push的時候不會上傳。

需要注意的是,gitignore還可以指定要將哪些文件添加到版本管理中,如下:

!*.zip

!/mtk/one.txt

唯一的區別就是規則開頭多了一個感嘆號,Git會將滿足這類規則的文件添加到版本管理中。為什么要有兩種規則呢?

想象一個場景:假如我們只需要管理/mtk/目錄中的one.txt文件,這個目錄中的其他文件都不需要管理,那么.gitignore規則應寫為::

/mtk/*

!/mtk/one.txt

假設我們只有過濾規則,而沒有添加規則,那么我們就需要把/mtk/目錄下除了one.txt以外的所有文件都寫出來!

注意上面的/mtk/*不能寫為/mtk/,否則父目錄被前面的規則排除掉了,one.txt文件雖然加了!過濾規則,也不會生效!

還有一些規則如下:

fd1/*

說明:忽略目錄 fd1 下的全部內容;注意,不管是根目錄下的?/fd1/?目錄,還是某個子目錄?/child/fd1/?目錄,都會被忽略;

/fd1/*

說明:忽略根目錄下的?/fd1/?目錄的全部內容;

/*

!.gitignore

!/fw/

/fw/*

!/fw/bin/

!/fw/sf/

說明:忽略全部內容,但是不忽略 .gitignore 文件、根目錄下的?/fw/bin/?和?/fw/sf/?目錄;注意要先對bin/的父目錄使用!規則,使其不被排除。

溫馨提示:

如果你不慎在創建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規則,這些規則也不會起作用,Git仍然會對所有文件進行版本管理。簡單來說出現這種問題的原因就是Git已經開始管理這些文件了,所以你無法再通過過濾規則過濾它們。所以大家一定要養成在項目開始就創建.gitignore文件的習慣,否則一單push,處理起來會非常麻煩。


ZT-散盡浮華

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容