忽略某些文件 —— Git 学习笔记 05
忽略某些文件
- 忽略某些文件
- 通過.gitignore文件
- 其他規(guī)則源
- 如何選擇規(guī)則源
- 參考資料
對于某些文件,我們不希望把它們納入 Git 的管理,也不希望它們總出現(xiàn)在未跟蹤文件列表。通常它們都是些自動生成的文件,比如日志文件、編譯過程中創(chuàng)建的臨時文件等。
通過.gitignore文件
假設(shè)我們要忽略 lib.a 文件,那我們可以在 lib.a 所在目錄下創(chuàng)建一個名為 .gitignore 的文件,在里面列出 lib.a
使用 Windows 的同學(xué)注意了,如果你在資源管理器里新建一個.gitignore文件,它會非常弱智地提示你必須輸入文件名,但是在文本編輯器(比如 Notepad++)里“保存”或者“另存為”就可以把文件保存為.gitignore了。
除了在.gitignore里面列出要忽略的文件名,Git 還支持一種更為豐富的機(jī)制:一個.gitignore文件里可以包含一個文件名模式列表,指定哪一類文件要忽略。格式如下:
空行會被忽略;以“#”號開頭的行可以用于注釋;
一個簡單的字面值文件名(literal filename)匹配任何目錄中的同名文件;
目錄名由末尾的反斜線(/)標(biāo)記。這能匹配同名的目錄和子目錄,但是不匹配文件或符號鏈接;
支持標(biāo)準(zhǔn)的 glob 模式。glob 模式類似于 shell 所使用的簡化版正則表達(dá)式。具體來講,*匹配零個或更多字符,[abc]匹配方括號內(nèi)的任意單個字符(在這個例子里是a、b或c),而?則匹配任意單個字符。在方括號中使用短劃線分隔的兩個字符(比如 [0-9])能夠匹配在這兩個字符范圍內(nèi)的任何單個字符(在這個例子里是0到9之間的任何數(shù)字)。注意:*不能匹配路徑分隔符。
可以用**匹配嵌套的目錄,比如 a/**/z 能夠匹配 a/z、a/b/z 和 a/b/c/z 等。
以/開頭的模式可用于禁止遞歸匹配,即只匹配當(dāng)前目錄或文件,而不匹配子目錄或子目錄下的文件。
以!開始的模式表示取反,即原本被忽略的目錄或文件又被 Git 追蹤。注意:出于性能考慮,Git不會遍歷已經(jīng)被忽略的目錄,因此,定義在被忽略目錄下的.gitignore規(guī)則都是無效的。
說明:
其他規(guī)則源
除了.gitignore文件,Git 還有其他的規(guī)則源。通常來說,Git 會從多個可能的規(guī)則源獲取gitignore規(guī)則來決定是否要忽略某一個具體的路徑。以下列出了各種規(guī)則源:
說明:
以上三點,總結(jié)成一句話——就近原則。
如何選擇規(guī)則源
規(guī)則定義在哪個文件中取決于該規(guī)則的作用域:
如果一個gitignore規(guī)則應(yīng)該被Git追蹤,或者希望別人clone倉庫后這些規(guī)則也生效,那么它就應(yīng)該被定義在.gitignore文件中
如果只想規(guī)則在某一個倉庫中生效,但是不需要共享給其他用戶, 那么可以把它定義在此倉庫的.git/info/exclude中,這樣它不會隨clone而被復(fù)制
如果你想某個規(guī)則對所有倉庫都生效,則可以配置變量core.excludesFile。例如
$ touch ~/.gitignore $ git config --global core.excludesFile ~/.gitignore第1行:在家目錄下面創(chuàng)建一個文件.gitignore,其實路徑和文件名可以自選。當(dāng)然你需要在這個文件中寫點規(guī)則
第2行:配置變量core.excludesFile
參考資料
總結(jié)
以上是生活随笔為你收集整理的忽略某些文件 —— Git 学习笔记 05的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 取得 Git 仓库 —— Git 学习笔
- 下一篇: git status 命令总结 —— G