【Git第七節(jié)】忽略文件
同學(xué)們!歡迎大家來(lái)到Python自學(xué)教程教室,上節(jié)課我們帶大家學(xué)習(xí)了文件狀態(tài)的相關(guān)內(nèi)容,這節(jié)課我們學(xué)習(xí)忽略文件的相關(guān)內(nèi)容,你準(zhǔn)備好了嗎?
在文件夾中,經(jīng)常會(huì)有些“其他”文件,比如上節(jié)課最后提到的,編輯器產(chǎn)生~結(jié)尾的備份文件,或者一些臨時(shí)文件。又可能,某些文件我們只是在本地使用,并不想提交到遠(yuǎn)程的倉(cāng)庫(kù)中被別人看到。但如果我們不跟蹤這些文件,Git會(huì)一直很執(zhí)著地提醒我們工作目錄中有一些未被跟蹤的文件。如果你想清凈一點(diǎn),就可以通過(guò).gitignore文件忽略你不想看到的文件。
要感受一下忽略文件的效果,首先你得有打算忽略的文件,所以我們強(qiáng)行創(chuàng)建一個(gè)叫做readme.txt.tmp的文件,假設(shè)它是readme.txt產(chǎn)生的臨時(shí)文件。
git status 看一下效果,同上節(jié)課中一樣,在untracked files里列出了這個(gè)文件:
# On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # readme.txt.tmp othing added to commit but untracked files present (use "git add" to track)
然后我們?cè)诠ぷ髂夸浿行陆ㄒ粋€(gè).gitignore文件,在里面寫(xiě)上一行:
*tmp
保存退出,再運(yùn)行 git status:
# On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore othing added to commit but untracked files present (use "git add" to track)
readme.txt.tmp文件消失了,untracked files里只剩下剛創(chuàng)建的.gitignore文件。
來(lái)看一下《Pro Git》里對(duì).gitignore格式規(guī)范的解釋:
所有空行或者以注釋符號(hào) # 開(kāi)頭的行都會(huì)被 Git 忽略。
可以使用標(biāo)準(zhǔn)的 glob 模式匹配。
匹配模式最后跟反斜杠(/)說(shuō)明要忽略的是目錄。
要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(hào)(!)取反。
所謂的 glob 模式是指 shell 所使用的簡(jiǎn)化了的正則表達(dá)式:
星號(hào)(*)匹配零個(gè)或多個(gè)任意字符;
[abc] 匹配任何一個(gè)列在方括號(hào)中的字符(這個(gè)例子要么匹配一個(gè) a,要么匹配一個(gè) b,要么匹配一個(gè) c);
問(wèn)號(hào)(?)只匹配一個(gè)任意字符;
如果在方括號(hào)中使用短劃線分隔兩個(gè)字符,表示所有在這兩個(gè)字符范圍內(nèi)的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數(shù)字)。
所以我們前面寫(xiě)的 *tmp,就是指忽略所有以tmp結(jié)尾的文件。
再來(lái)看一個(gè) .gitignore 文件的例子:
# 此為注釋 – 將被 Git 忽略 # 忽略所有 .a 結(jié)尾的文件 *.a # 但 lib.a 除外 !lib.a # 僅僅忽略項(xiàng)目根目錄下的 TODO 文件 # 不包括 subdir/TODO /TODO # 忽略 build/ 目錄下的所有文件 build/ # 忽略 doc 目錄下的所有 .txt 文件 # 會(huì)忽略 doc/notes.txt # 但不包括 doc/server/arch.txt doc/*.txt
當(dāng)然,你也可以把.gitignore文件本身從git中忽略。但我不建議這么做,而是所有協(xié)作開(kāi)發(fā)者使用統(tǒng)一的規(guī)范,避免有人因?yàn)闆](méi)寫(xiě).gitignore而提交上去一些奇怪的文件。
在項(xiàng)目一開(kāi)始就把.gitignore設(shè)置好,不僅是為了好看,也是避免不必要的文件對(duì)代碼產(chǎn)生干擾。比如有些需要本地生成的文件,如果放在遠(yuǎn)程倉(cāng)庫(kù)中被其他人下載使用,也可能會(huì)導(dǎo)致程序無(wú)法正常運(yùn)行。
恭喜您在Python自學(xué)的道路上又堅(jiān)持了一天,今天我們所講的忽略文件的相關(guān)內(nèi)容你都學(xué)會(huì)了嗎?你都理解清楚了嗎?下節(jié)更精彩,敬請(qǐng)期待!
好啦,今天的分享到這里就結(jié)束了,希望大家持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享!
聲明:文章來(lái)源于網(wǎng)絡(luò),侵刪!