什么是 .gitignore 文件?.gitignore 文件是用來做什么的?
在任何當(dāng)前工作的 Git 倉庫中,每個(gè)文件都是這樣的:
-
追蹤的(tracked)- 這些是 Git 所知道的所有文件或目錄。這些是新添加(用
git add
添加)和提交(用git commit
提交)到主倉庫的文件和目錄。 -
未被追蹤的(untracked) - 這些是在工作目錄中創(chuàng)建的,但還沒有被暫存(或用
git add
命令添加)的任何新文件或目錄。 - 被忽略的(ignored) - 這些是 Git 知道的要全部排除、忽略或在 Git 倉庫中不需要注意的所有文件或目錄。本質(zhì)上,這是一種告訴 Git 哪些未被追蹤的文件應(yīng)該保持不被追蹤并且永遠(yuǎn)不會(huì)被提交的方法。
所有被忽略的文件都會(huì)被保存在一個(gè) .gitignore
文件中。
.gitignore
文件是一個(gè)純文本文件,包含了項(xiàng)目中所有指定的文件和文件夾的列表,這些文件和文件夾是 Git 應(yīng)該忽略和不追蹤的。
在 .gitignore
中,你可以通過提及特定文件或文件夾的名稱或模式來告訴 Git 只忽略一個(gè)文件或一個(gè)文件夾。你也可以用同樣的方法告訴 Git 忽略多個(gè)文件或文件夾。
如何創(chuàng)建一個(gè) .gitignore 文件?
通常,一個(gè) .gitignore
文件會(huì)被放在倉庫的根目錄下。根目錄也被稱為父目錄和當(dāng)前工作目錄。根目錄包含了組成項(xiàng)目的所有文件和其他文件夾。
也就是說,你可以把它放在版本庫的任何文件夾中。你甚至可以有多個(gè) .gitignore
文件。
要在基于 Unix 的系統(tǒng)(如 macOS 或 Linux)上用命令行創(chuàng)建一個(gè) .gitignore
文件,打開終端程序(如 macOS 上的 Terminal.app)。然后,用 cd
命令導(dǎo)航到包含項(xiàng)目的根文件夾,并輸入以下命令,為你的目錄創(chuàng)建一個(gè) .gitignore
文件:
touch .gitignore
名字前面有點(diǎn)(.
)的文件默認(rèn)是隱藏的。
當(dāng)單獨(dú)使用 ls
命令時(shí),隱藏的文件是不可見的。要從命令行查看所有的文件–包括隱藏的文件–請(qǐng)?jiān)?ls
命令中使用 -a
標(biāo)志,如圖所示:
ls -a
在 .gitignore 文件中應(yīng)包括什么?
你應(yīng)該考慮添加到 .gitignore
文件中的文件類型是任何不需要被提交的文件。
你可能出于安全原因不想提交它們,或者因?yàn)樗鼈兪悄愕谋镜匚募?,因此?duì)與你在同一項(xiàng)目上工作的其他開發(fā)者來說是不必要的。
其中一些可能包括:
- 操作系統(tǒng)文件。每個(gè)操作系統(tǒng)(如 macOS、Windows 和 Linux)都會(huì)生成系統(tǒng)特定的隱藏文件,其他開發(fā)者不需要使用這些文件,因?yàn)樗麄兊南到y(tǒng)也會(huì)生成這些文件。例如,在 macOS 上,F(xiàn)inder 會(huì)生成一個(gè)
.DS_Store
文件,其中包括用戶對(duì)文件夾的外觀和顯示的偏好,如圖標(biāo)的大小和位置。 - 由代碼編輯器和 IDE(IDE 代表集成開發(fā)環(huán)境)等應(yīng)用程序生成的配置文件。這些文件是為你、你的配置和你的偏好設(shè)置定制的。
- 從你的項(xiàng)目中使用的編程語言或框架自動(dòng)生成的文件,以及編譯后的代碼特定文件,如
.o
文件。 - 由軟件包管理器生成的文件夾,如 npm 的
node_modules
文件夾。這是一個(gè)用于保存和跟蹤你在本地安裝的每個(gè)軟件包的依賴關(guān)系的文件夾。 - 包含敏感數(shù)據(jù)和個(gè)人信息的文件。這類文件的一些例子是含有你的憑證(用戶名和密碼)的文件和含有環(huán)境變量的文件,如
.env
文件(.env
文件含有需要保持安全和隱私的 API 密鑰)。 - 運(yùn)行時(shí)文件,如
.log
文件。它們提供關(guān)于操作系統(tǒng)的使用活動(dòng)和錯(cuò)誤的信息,以及在操作系統(tǒng)中發(fā)生的事件的歷史。
如何在 Git 中忽略一個(gè)文件和文件夾
如果你想只忽略一個(gè)特定的文件,你需要提供該文件在項(xiàng)目根目錄下的完整路徑。
例如,如果你想忽略位于根目錄下的 text.txt
文件,你可以做如下操作:
/text.txt
而如果你想忽略一個(gè)位于根目錄下的 test
目錄中的 text.txt
文件,你要做的是:
/test/text.txt
你也可以這樣寫上述內(nèi)容:
test/text.txt
如果你想忽略所有具有特定名稱的文件,你需要寫出該文件的字面名稱。
例如,如果你想忽略任何 text.txt
文件,你可以在 .gitignore
中添加以下內(nèi)容:
text.txt
在這種情況下,你不需要提供特定文件的完整路徑。這種模式將忽略位于項(xiàng)目中任何地方的具有該特定名稱的所有文件。
要忽略整個(gè)目錄及其所有內(nèi)容,你需要包括目錄的名稱,并在最后加上斜線 /
:
test/
這個(gè)命令將忽略位于你的項(xiàng)目中任何地方的名為 test
的目錄(包括目錄中的其他文件和其他子目錄)。
需要注意的是,如果你只寫一個(gè)文件的名字或者只寫目錄的名字而不寫斜線 /
,那么這個(gè)模式將同時(shí)匹配任何帶有這個(gè)名字的文件或目錄:
# 匹配任何名字帶有 test 的文件和目錄
test
如果你想忽略任何以特定單詞開頭的文件或目錄怎么辦?
例如,你想忽略所有名稱以 img
開頭的文件和目錄。要做到這一點(diǎn),你需要指定你想忽略的名稱,后面跟著 *
通配符選擇器,像這樣:
img*
這個(gè)命令將忽略所有名字以 img
開頭的文件和目錄。
但是,如果你想忽略任何以特定單詞結(jié)尾的文件或目錄呢?
如果你想忽略所有以特定文件擴(kuò)展名結(jié)尾的文件,你需要使用 *
通配符選擇器,后面跟你想忽略的文件擴(kuò)展名。
例如,如果你想忽略所有以 .md
文件擴(kuò)展名結(jié)尾的 markdown 文件,你可以在你的 .gitignore
文件中添加以下內(nèi)容:
*.md
這個(gè)模式將匹配位于項(xiàng)目中任何地方的以 .md
為擴(kuò)展名的任何文件。
前面,你看到了如何忽略所有以特定后綴結(jié)尾的文件。當(dāng)你想做一個(gè)例外,而有一個(gè)后綴的文件你不想忽略的時(shí)候,會(huì)發(fā)生什么?
假設(shè)你在你的 .gitignore
文件中添加了以下內(nèi)容:
.md
這個(gè)模式會(huì)忽略所有以 .md
結(jié)尾的文件,但你不希望 Git 忽略一個(gè) README.md
文件。
要做到這一點(diǎn),你需要使用帶有感嘆號(hào)的否定模式,即 !
,來排除一個(gè)本來會(huì)被忽略的文件:
# 忽略所有 .md 文件
.md
# 不忽略 README.md 文件
!README.md
在 .gitignore
文件中使用這兩種模式,所有以 .md
結(jié)尾的文件都會(huì)被忽略,除了 README.md
文件。
需要記住的是,如果你忽略了整個(gè)目錄,這個(gè)模式就不起作用。
例如,你忽略了所有的 test
目錄:
test/
假設(shè)在一個(gè) test
文件夾內(nèi),你有一個(gè)文件,example.md
,你不想忽略它。
你不能像這樣在一個(gè)被忽略的目錄內(nèi)排除一個(gè)文件:
# 忽略所有名字帶有 test 的目錄
test/
# 試圖在一個(gè)被忽略的目錄內(nèi)排除一個(gè)文件是行不通的
!test/example.md
如何忽略以前提交的文件
當(dāng)你創(chuàng)建一個(gè)新的倉庫時(shí),最好的做法是創(chuàng)建一個(gè) .gitignore
文件,包含所有你想忽略的文件和不同的文件模式–在提交之前。
Git 只能忽略尚未提交到倉庫的未被追蹤的文件。
如果你過去已經(jīng)提交了一個(gè)文件,但希望沒有提交,會(huì)發(fā)生什么?
比如你不小心提交了一個(gè)存儲(chǔ)環(huán)境變量的 .env
文件。
你首先需要更新 .gitignore
文件以包括 .env
文件:
# 給 .gitignore 添加 .env 文件
echo ".env" >> .gitignore
現(xiàn)在,你需要告訴 Git 不要追蹤這個(gè)文件,把它從索引中刪除:
git rm --cached .env
git rm
命令,連同 --cached
選項(xiàng),從版本庫中刪除文件,但不刪除實(shí)際的文件。這意味著該文件仍然在你的本地系統(tǒng)和工作目錄中作為一個(gè)被忽略的文件。
git status
會(huì)顯示該文件已不在版本庫中,而輸入 ls
命令會(huì)顯示該文件存在于你的本地文件系統(tǒng)中。
如果你想從版本庫和你的本地系統(tǒng)中刪除該文件,省略 --cached
選項(xiàng)。
接下來,用 git add
命令將 .gitignore
添加到暫存區(qū):
git add .gitignore
最后,用 git commit
命令提交 .gitignore
文件:文章來源:http://www.zghlxwxcb.cn/news/detail-754884.html
git commit -m "update ignored files"
Reference:https://www.freecodecamp.org/chinese/news/gitignore-file-how-to-ignore-files-and-folders-in-git/文章來源地址http://www.zghlxwxcb.cn/news/detail-754884.html
到了這里,關(guān)于.gitignore 文件——如何在 Git 中忽略文件和文件夾詳細(xì)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!