不要忽視 .gitignore
我注意到很多開(kāi)發(fā)者沒(méi)有使用 .gitignore 文件,盡管使用 .gitignore 文件來(lái)指定你不希望 Git 在版本控制中跟蹤的文件是最佳實(shí)踐之一。.gitignore 可以提高代碼質(zhì)量,所以你不應(yīng)該忽略版本庫(kù)中的 .gitignore。
什么是 .gitignore?
Git 倉(cāng)庫(kù)中的文件可以是:
- 未跟蹤的:未被暫存或提交的變更。
- 跟蹤的:已暫存或提交的變更。
- 忽略的:你讓 Git 忽略的文件。
有些文件你希望 Git 忽略,不要在你的版本庫(kù)中跟蹤它,這些文件包括許多自動(dòng)生成的或特定于平臺(tái)的文件,以及其他本地配置文件,如:
- 含有敏感信息的文件
- 編譯出的代碼,如 .dll 或 .class。
- 系統(tǒng)文件,如 .DS_Store 或 Thumbs.db。
- 含有臨時(shí)信息的文件,如日志、緩存等。
- 生成的文件,如 dist 文件夾。
如果你不想讓 Git 跟蹤版本庫(kù)中的某些文件,不過(guò)這不能通過(guò) Git 命令做到。(雖然你可以用 git rm 命令停止跟蹤一個(gè)文件,比如 git rm --cached。)相反,你需要使用 .gitignore 文件,這是一個(gè)告訴 Git 不要跟蹤哪些文件的文本文件。
創(chuàng)建 .gitignore 文件很簡(jiǎn)單,只需創(chuàng)建一個(gè)文本文件并命名為 .gitignore。記得在文件名的開(kāi)頭有一個(gè)點(diǎn)(.)。就這樣就完成了。
編寫(xiě) .gitignore 文件的規(guī)則
根據(jù)文檔,“.gitignore 文件中的每一行都指定了一個(gè)模式。”
在此上下文中,“模式”可以指一個(gè)特定的文件名,或者指文件名的某些部分結(jié)合上通配符。換句話說(shuō),example.txt 是匹配名為 example.txt 的文件的有效模式,而 ex*txt 是匹配名為 example.txt 以及 export.txt 的文件的有效模式。
以下是一些幫助你正確設(shè)置 .gitignore 文件的基本規(guī)則:
- 任何以哈希(#)開(kāi)頭的行都是注釋。
- \ 字符可以轉(zhuǎn)義特殊字符。
- / 字符表示該規(guī)則只適用于位于同一文件夾中的文件和文件夾。
- 星號(hào)(*)表示任意數(shù)量的字符(零個(gè)或更多)。
- 兩個(gè)星號(hào)(**)表示任意數(shù)量的子目錄。
- 一個(gè)問(wèn)號(hào)(?)代替零個(gè)或一個(gè)字符。
- 一個(gè)感嘆號(hào)(!)會(huì)反轉(zhuǎn)特定的規(guī)則(即包括了任何被前一個(gè)模式排除的文件)。
- 空行會(huì)被忽略,所以你可以用它們來(lái)增加空間,使你的文件更容易閱讀。
- 在末尾添加 / 會(huì)忽略整個(gè)目錄路徑。
本地與全局 .gitignore 文件的比較
有兩種類型的 .gitignore 文件:
- 本地:放在 Git 倉(cāng)庫(kù)的根目錄下,只在該倉(cāng)庫(kù)中工作,并且必須提交到該倉(cāng)庫(kù)中。
- 全局:放在你的主目錄根目錄下,影響你在你的機(jī)器上使用的每個(gè)倉(cāng)庫(kù),不需要提交。
很多開(kāi)發(fā)者在項(xiàng)目倉(cāng)庫(kù)中使用本地的 .gitignore 文件,但很少有人使用全局的 .gitignore 文件。使用全局文件最顯著的優(yōu)勢(shì)是,你不需要提交就可以使用它,而且做一個(gè)改動(dòng)會(huì)影響你所有的版本庫(kù)。
Git 忽略的優(yōu)勢(shì)
除了確保特定的文件不被 Git 追蹤之外,使用 .gitignore 文件還有其他好處。
- 通過(guò)忽略不需要的文件,它可以幫助你保持代碼庫(kù)的干凈。
- 它可以控制代碼庫(kù)的大小,這在你正在做一個(gè)大項(xiàng)目的時(shí)候特別有用。
- 你的每一次提交、推送和拉取請(qǐng)求都將是干凈的。
結(jié)束語(yǔ)
Git 很強(qiáng)大,但歸根結(jié)底,它只是一個(gè)計(jì)算機(jī)程序而已。使用最佳實(shí)踐并保持你的代碼倉(cāng)庫(kù)穩(wěn)定是一個(gè)團(tuán)隊(duì)的努力,其中要做到一件事就是使用 .gitignore 文件。
via:https://opensource.com/article/20/8/dont-ignore-gitignore