Git中管理該目錄下多級(jí)目錄下的文件

現(xiàn)有以下目錄結(jié)構(gòu):


目錄.png

假設(shè)引用場景(一)
忽略 aaa目錄挪凑,但是需要管理aaa目錄下的bbb.txt,除此之外,其他文件均不需要管理

#忽略aaa/下的所有文件什往,注意是aaa/*,而不是aaa/,
aaa/*  
#不忽略aaa/bbb.txt
!aaa/bbb.txt

結(jié)果:

 xx$  git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   aaa/bbb.txt

假設(shè)引用場景(二)
繼續(xù)場景(一)的需求向叉,還需要管理ddd目錄下的eee.txt,除此之外丈冬,其他文件均不需要管理

#忽略aaa/下的所有文件傲武,注意是aaa/*,而不是aaa/,
aaa/*  
#不忽略aaa/bbb.txt
!aaa/bbb.txt
#不忽略aaa/ddd/
!aaa/ddd/
#忽略aaa/ddd 的所有文件
aaa/ddd/*
#不忽略aaa/ddd/eee.txt 
!aaa/ddd/eee.txt

結(jié)果:

 xx$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   aaa/bbb.txt
    new file:   aaa/ddd/eee.txt

以此類推,在需要管理多級(jí)目錄下的某個(gè)文件時(shí)曹宴,需要首先對(duì)上級(jí)目錄"!"不忽略搂橙,然后對(duì)目錄下"*"忽略所有文件,最后對(duì)目錄下"!"不忽略該文件。

.gitignore只能忽略那些原來沒有被track的文件区转,如果某些文件已經(jīng)被納入了版本管理中苔巨,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài))废离,然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

.gitignore注釋用'#', *表示匹配0個(gè)或多個(gè)任意字符侄泽,所以下面面的模式就是要忽略所有的xml文件,log文件和apk文件。

# cat .gitignore
*.xml
*.log
*.apk

在 .gitignore 文件中蜻韭,每一行的忽略規(guī)則的語法如下:
1)空格不匹配任意文件悼尾,可作為分隔符,可用反斜杠轉(zhuǎn)義
2)以“Pし剑”開頭的行都會(huì)被 Git 忽略闺魏。即#開頭的文件標(biāo)識(shí)注釋,可以使用反斜杠進(jìn)行轉(zhuǎn)義俯画。
3)可以使用標(biāo)準(zhǔn)的glob模式匹配析桥。所謂的glob模式是指shell所使用的簡化了的正則表達(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ī)則是不起作用的姑丑。也就是說"!"開頭的模式表示否定蛤签,該文件將會(huì)再次被包含,如果排除了該文件的父級(jí)目錄栅哀,則使用"!"也不會(huì)再次被包含震肮。可以使用反斜杠進(jìn)行轉(zhuǎn)義昌屉。

需要謹(jǐn)記:git對(duì)于.ignore配置文件是按行從上到下進(jìn)行規(guī)則匹配的钙蒙,意味著如果前面的規(guī)則匹配的范圍更大,則后面的規(guī)則將不會(huì)生效间驮;

#               表示此為注釋,將被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è)具體文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市堆巧,隨后出現(xiàn)的幾起案子妄荔,更是在濱河造成了極大的恐慌,老刑警劉巖谍肤,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啦租,死亡現(xiàn)場離奇詭異,居然都是意外死亡荒揣,警方通過查閱死者的電腦和手機(jī)篷角,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來系任,“玉大人恳蹲,你說我怎么就攤上這事×├模” “怎么了嘉蕾?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長霜旧。 經(jīng)常有香客問我荆针,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任航背,我火速辦了婚禮喉悴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玖媚。我一直安慰自己箕肃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布今魔。 她就那樣靜靜地躺著勺像,像睡著了一般。 火紅的嫁衣襯著肌膚如雪错森。 梳的紋絲不亂的頭發(fā)上吟宦,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音涩维,去河邊找鬼殃姓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瓦阐,可吹牛的內(nèi)容都是我干的蜗侈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼睡蟋,長吁一口氣:“原來是場噩夢啊……” “哼踏幻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起戳杀,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤该面,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后信卡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隔缀,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年坐求,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚕泽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晌梨。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桥嗤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仔蝌,到底是詐尸還是另有隱情泛领,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布敛惊,位于F島的核電站渊鞋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锡宋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一儡湾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧执俩,春花似錦徐钠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衡奥,卻和暖如春爹袁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矮固。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工失息, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乏屯。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓根时,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辰晕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛤迎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評(píng)論 0 5
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1含友、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,094評(píng)論 1 19
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理替裆,服務(wù)發(fā)現(xiàn),斷路器窘问,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 在使用Git的過程中辆童,我們喜歡有的文件比如日志,臨時(shí)文件惠赫,編譯的中間文件等不要提交到代碼倉庫把鉴,這時(shí)就要設(shè)置相應(yīng)的忽...
    做最棒的閱讀 551評(píng)論 0 1
  • 有很多文件不必使用git管理。例如Eclipse或其他IDE生成的項(xiàng)目文件儿咱,編譯生成的各種目標(biāo)或臨時(shí)文件等庭砍。 使用...
    Ten_Minutes閱讀 2,150評(píng)論 0 4