git 配置忽略文件規(guī)則

工作區(qū)新建一個(gè)名稱為.gitignore的文件褪秀。

然后怀樟,把要忽略的文件名填進(jìn)去末盔,Git就會(huì)自動(dòng)忽略這些文件筑舅。

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

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

.gitignore忽略規(guī)則的優(yōu)先級(jí)

在 .gitingore 文件中误墓,每一行指定一個(gè)忽略規(guī)則,Git檢查忽略規(guī)則的時(shí)候有多個(gè)來(lái)源益缎,它的優(yōu)先級(jí):

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

2)當(dāng)前目錄定義的規(guī)則

3)父級(jí)目錄定義的規(guī)則谜慌,依次遞推

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

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

.gitignore忽略規(guī)則的匹配語(yǔ)法

在 .gitignore 文件中,每一行的忽略規(guī)則的語(yǔ)法如下:

1)空格不匹配任意文件莺奔,可作為分隔符欣范,可用反斜杠轉(zhuǎn)義

2)以“”開頭的行都會(huì)被 Git 忽略。即#開頭的文件標(biāo)識(shí)注釋令哟,可以使用反斜杠進(jìn)行轉(zhuǎn)義恼琼。

3)可以使用標(biāo)準(zhǔn)的glob模式匹配。所謂的glob模式是指shell所使用的簡(jiǎn)化了的正則表達(dá)式屏富。

4)以斜杠"/"開頭表示目錄晴竞;"/"結(jié)束的模式只匹配文件夾以及在該文件夾路徑下的內(nèi)容,但是不匹配該文件狠半;"/"開始的模式匹配項(xiàng)目跟目錄颓鲜;如果一個(gè)模式不包含斜杠,則它匹配相對(duì)于當(dāng)前 .gitignore 文件路徑的內(nèi)容典予,如果該模式不在 .gitignore 文件中,則相對(duì)于項(xiàng)目根目錄乐严。

5)以星號(hào)"*"通配多個(gè)字符瘤袖,即匹配多個(gè)任意字符;使用兩個(gè)星號(hào)"**" 表示匹配任意中間目錄昂验,比如`a/**/z`可以匹配 a/z, a/b/z 或 a/b/c/z等捂敌。

6)以問號(hào)"?"通配單個(gè)字符,即匹配一個(gè)任意字符既琴;

7)以方括號(hào)"[]"包含單個(gè)字符的匹配列表占婉,即匹配任何一個(gè)列在方括號(hào)中的字符。比如[abc]表示要么匹配一個(gè)a甫恩,要么匹配一個(gè)b逆济,要么匹配一個(gè)c;如果在方括號(hào)中使用短劃線分隔兩個(gè)字符,表示所有在這兩個(gè)字符范圍內(nèi)的都可以匹配奖慌。比如[0-9]表示匹配所有0到9的數(shù)字抛虫,[a-z]表示匹配任意的小寫字母)。

8)以嘆號(hào)"!"表示不忽略(跟蹤)匹配到的文件或目錄简僧,即要忽略指定模式以外的文件或目錄建椰,可以在模式前加上驚嘆號(hào)(!)取反。需要特別注意的是:如果文件的父目錄已經(jīng)被前面的規(guī)則排除掉了岛马,那么對(duì)這個(gè)文件用"!"規(guī)則是不起作用的棉姐。也就是說(shuō)"!"開頭的模式表示否定,該文件將會(huì)再次被包含啦逆,如果排除了該文件的父級(jí)目錄伞矩,則使用"!"也不會(huì)再次被包含”钠郑可以使用反斜杠進(jìn)行轉(zhuǎn)義扭吁。

.gitignore忽略規(guī)則簡(jiǎn)單說(shuō)明

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

*.a???????????? 表示忽略所有 .a 結(jié)尾的文件

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

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

build/????????? 表示忽略 build/目錄下的所有文件盲镶,過濾整個(gè)build文件夾侥袜;

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

bin/:?????????? 表示忽略當(dāng)前路徑下的bin文件夾,該文件夾下的所有內(nèi)容都會(huì)被忽略溉贿,不忽略 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:???? 表示忽略當(dāng)前路徑的 config.php 文件

/mtk/?表示過濾整個(gè)文件夾

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

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

被過濾掉的文件就不會(huì)出現(xiàn)在git倉(cāng)庫(kù)中(gitlab或github)了宇色,當(dāng)然本地庫(kù)中還有九杂,只是push的時(shí)候不會(huì)上傳。

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

!*.zip

!/mtk/one.txt

唯一的區(qū)別就是規(guī)則開頭多了一個(gè)感嘆號(hào),Git會(huì)將滿足這類規(guī)則的文件添加到版本管理中抢蚀。為什么要有兩種規(guī)則呢镀层?

想象一個(gè)場(chǎng)景:假如我們只需要管理/mtk/目錄中的one.txt文件,這個(gè)目錄中的其他文件都不需要管理皿曲,那么.gitignore規(guī)則應(yīng)寫為::

/mtk/*

!/mtk/one.txt

假設(shè)我們只有過濾規(guī)則唱逢,而沒有添加規(guī)則,那么我們就需要把/mtk/目錄下除了one.txt以外的所有文件都寫出來(lái)屋休!

注意上面的/mtk/*不能寫為/mtk/坞古,否則父目錄被前面的規(guī)則排除掉了,one.txt文件雖然加了!過濾規(guī)則劫樟,也不會(huì)生效痪枫!

還有一些規(guī)則如下:

fd1/*

說(shuō)明:忽略目錄 fd1 下的全部?jī)?nèi)容织堂;注意,不管是根目錄下的?/fd1/?目錄听怕,還是某個(gè)子目錄?/child/fd1/?目錄捧挺,都會(huì)被忽略;

/fd1/*

說(shuō)明:忽略根目錄下的?/fd1/?目錄的全部?jī)?nèi)容尿瞭;

/*

!.gitignore

!/fw/

/fw/*

!/fw/bin/

!/fw/sf/

說(shuō)明:忽略全部?jī)?nèi)容闽烙,但是不忽略 .gitignore 文件、根目錄下的?/fw/bin/?和?/fw/sf/?目錄声搁;注意要先對(duì)bin/的父目錄使用!規(guī)則黑竞,使其不被排除。

溫馨提示:

如果你不慎在創(chuàng)建.gitignore文件之前就push了項(xiàng)目疏旨,那么即使你在.gitignore文件中寫入新的過濾規(guī)則很魂,這些規(guī)則也不會(huì)起作用,Git仍然會(huì)對(duì)所有文件進(jìn)行版本管理檐涝。簡(jiǎn)單來(lái)說(shuō)出現(xiàn)這種問題的原因就是Git已經(jīng)開始管理這些文件了遏匆,所以你無(wú)法再通過過濾規(guī)則過濾它們。所以大家一定要養(yǎng)成在項(xiàng)目開始就創(chuàng)建.gitignore文件的習(xí)慣谁榜,否則一單push幅聘,處理起來(lái)會(huì)非常麻煩。


ZT-散盡浮華

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窃植,一起剝皮案震驚了整個(gè)濱河市帝蒿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巷怜,老刑警劉巖葛超,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異延塑,居然都是意外死亡绣张,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門关带,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)侥涵,“玉大人,你說(shuō)我怎么就攤上這事豫缨。” “怎么了端朵?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵好芭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我冲呢,道長(zhǎng)舍败,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮邻薯,結(jié)果婚禮上裙戏,老公的妹妹穿的比我還像新娘。我一直安慰自己厕诡,他們只是感情好累榜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灵嫌,像睡著了一般壹罚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寿羞,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天猖凛,我揣著相機(jī)與錄音,去河邊找鬼绪穆。 笑死辨泳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玖院。 我是一名探鬼主播菠红,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼司恳!你這毒婦竟也來(lái)了途乃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扔傅,失蹤者是張志新(化名)和其女友劉穎耍共,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猎塞,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡试读,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荠耽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钩骇。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铝量,靈堂內(nèi)的尸體忽然破棺而出倘屹,到底是詐尸還是另有隱情,我是刑警寧澤慢叨,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布纽匙,位于F島的核電站,受9級(jí)特大地震影響拍谐,放射性物質(zhì)發(fā)生泄漏烛缔。R本人自食惡果不足惜馏段,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望践瓷。 院中可真熱鬧院喜,春花似錦、人聲如沸晕翠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)崖面。三九已至元咙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巫员,已是汗流浹背庶香。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留简识,地道東北人赶掖。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像七扰,于是被迫代替她去往敵國(guó)和親奢赂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容