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