在使用 Git 時,保持你的存儲庫乾淨且有序不僅僅是一種最佳實踐——這對於順利的協作和高效的版本控制至關重要。這就是 .gitignore
的作用。這個方便的文件告訴 Git 哪些文件應被忽略,防止不必要的雜亂,並保持你的提交專注於真正重要的內容。
如果沒有 .gitignore
,你的存儲庫可能會迅速堆滿臨時文件、日誌和其他不應該出現在版本控制中的東西。更糟的是,你可能會不小心分享敏感信息。
在本教程中,你將學習如何創建和使用 .gitignore
文件,以保持你的項目整潔,避免常見的陷阱,並更有效地使用 Git。讓我們開始吧!
什麼是 .gitignore 文件?
一個 .gitignore
文件是一個配置文件,用於告訴 Git 在更改被暫存或提交時應該忽略哪些文件或目錄。
它防止不必要的文件——例如臨時的、系統生成的或與構建相關的文件——使你的存儲庫變得雜亂。保持存儲庫的乾淨使協作變得更容易,並確保僅跟踪必要的文件。
.gitignore
檔案是一個簡單的文本檔,放置在您的 Git 儲存庫的根目錄中。它包含模式,告訴 Git 忽略哪些檔案或目錄。這些模式可以根據您的項目需求進行自定義,幫助您維持良好的儲存庫組織。
剛接觸 Git 和 GitHub 嗎?請參考 這個 GitHub 和 Git 教程 獲得適合初學者的版本控制介紹。
以下是一些您應該考慮忽略的常見檔案和目錄類別:
- 構建產物:在構建過程中生成的檔案,這些檔案可以從源代碼重新生成,例如:
dist/
、build/
(前端和後端構建輸出)target/
(Java 和其他編譯語言的構建)- 依賴項:包管理系統為安裝的庫創建目錄,這些目錄不應被追蹤:
node_modules/
(Node.js)vendor/
(PHP, Composer).venv/
、venv/
(Python 虛擬環境)- 系統特定檔案:這些檔案由操作系統自動生成,並不對項目做出貢獻:
.DS_Store
(macOS)Thumbs.db
(Windows)- IDE 配置檔案: 每位開發者可能使用不同的開發環境,因此他們的個人設置不應該包含在版本控制中:
.vscode/
(VS Code).idea/
(JetBrains IDEs).project
,.settings/
(Eclipse)- 日誌和臨時檔案: 日誌、快取和臨時檔案應該被忽略,以防止不必要的雜亂:
*.log
,npm-debug.log*
,yarn-debug.log*
,yarn-error.log*
(來自各種工具的日誌)*.tmp
,*.bak
(臨時和備份檔案).mypy_cache/
,__pycache__/
(Python 快取).ipynb_checkpoints/
(Jupyter Notebook 檢查點)- 環境和秘密檔案: 敏感證書和環境特定配置不應該被提交:
.env
,.env.local
,.env.development
,.env.production
secrets.json
,config.json
(敏感配置檔案)- 資料庫和儲存檔案: 這些是本地生成的,應該不包含在版本控制中:
*.sqlite
,*.sqlite3
,*.db
(SQLite 資料庫檔案)dump.rdb
(Redis 資料庫轉儲)- CI/CD 和覆蓋檔案: 測試覆蓋報告和其他 CI/CD 藝術品應該被忽略:
coverage/
,*.lcov
(代碼覆蓋報告).tox/
,.pytest_cache/
(Python 測試檔案)
需要安裝 Git 嗎?請按照我們的逐步指南在這個 Git 安裝教程中快速設置。
.gitignore 的語法
如前所述,.gitignore
檔案包含與您的倉庫中的檔名進行匹配的模式,以決定它們是否應該被忽略。
基本語法
從本質上講,.gitignore
檔案由多行組成,每行表示一個要被忽略的模式。模式可以匹配:
- 具體文件
- 文件類型
- 目錄
該文件還支持注釋,可以通過以#
開頭的行來添加,以及空行以提高可讀性。
以下是基本結構的概述:
- 忽略特定文件:您可以直接列出文件名以忽略它。
secrets.txt
- 忽略整個目錄:通過在目錄名稱末尾添加
/
,您可以忽略該目錄內的所有內容。
logs/
- 忽略特定類型的所有文件:通配符(
*
)可用於忽略具有特定擴展名的所有文件。
*.py
- 否定:您可以使用
!
來否定一個模式,明確跟蹤某些本應被忽略的文件或目錄。
*.txt # Ignores all .txt files !readme.txt # Except for readme.txt
如何創建和使用.gitignore文件
創建和使用 .gitignore
是相當簡單的。在這一部分,我將逐步介紹這些步驟。
創建 .gitignore 文件
第 1 步:導航至你的代碼庫根目錄。.gitignore
文件通常放置在 Git 項目的根目錄中。打開你的終端或命令行,導航至你的 Git 代碼庫的根目錄:
cd /path/to/your/repo
第 2 步:創建 .gitignore 文件。一旦進入根目錄,使用任何文本編輯器或在終端中運行命令來創建 .gitignore
文件,例如:
touch .gitignore
步驟 3:將模式添加到檔案. 在文本編輯器中打開 .gitignore
檔案,並添加必要的模式以忽略檔案或目錄。每一行代表一個不同的模式。
這是一個基本專案中常用的 .gitignore
檔案範例:
# 忽略 node_modules 和依賴目錄 node_modules/ vendor/ # 忽略構建產物 dist/ build/ *.log # 忽略系統生成的檔案 .DS_Store Thumbs.db # 忽略環境和秘密檔案 .env config.json
一旦您添加了必要的模式,請保存檔案。Git 現在會在暫存或提交更改時自動忽略這些檔案。
步驟 4:將檔案提交到版本庫。將.gitignore
檔案提交到版本庫是很重要的,這樣所有合作者都能使用相同的忽略規則。這確保了所有參與者在專案中的一致性。
git add .gitignore git commit -m "Add .gitignore file" git push
一旦.gitignore
檔案被提交,您就為整個團隊建立了共享的忽略規則。
想要掌握在 Git 中的推送和拉取嗎?了解如何在這個 Git 推送和拉取教程中將您的工作與遠端版本庫同步。
使用 .gitignore 的最佳實踐
在創建.gitignore
檔案是維護乾淨的 Git 倉庫的一個直接步驟,應遵循一些最佳實踐,以確保該文件隨時間有效管理。
使用全局 .gitignore
對於跨多個項目工作的開發人員,有一些特定文件可能希望從每個存儲庫中排除,無論項目類型如何。
您可以配置一個全局的.gitignore
,適用於系統上的所有存儲庫,而不是將它們添加到每個項目的.gitignore
文件中。
配置全局.gitignore
文件:
- 創建一個
.gitignore_global
文件:
touch ~/.gitignore_global
- 添加要全局忽略的文件模式,例如:
.DS_Store *.log /.vscode/ /.idea/
- 设置 Git 使用全局
.gitignore
:
git config --global core.excludesfile ~/.gitignore_global
利用现有模板
不要为每个新项目从头开始构建.gitignore
文件,可以利用预配置的特定语言、框架或环境的.gitignore
模板。
这些模板的最佳资源之一是GitHub 官方的 .gitignore 存储库,在那里可以找到针对数百种编程语言和框架定制的.gitignore
文件。
定期审查 .gitignore
隨著項目的演變,可能需要將新檔案和目錄包含在.gitignore
檔案中。定期檢查並更新您的檔案以反映項目的當前狀態非常重要。
您可能需要更新.gitignore
檔案的一些情況包括:
- 採用生成額外檔案的新工具或庫(例如,切換到新的構建系統)。
- 重構或重新組織目錄,可能會導致應該排除的新檔案。
- 刪除已不再屬於項目的過時檔案或目錄。
故障排除.gitignore
即使設置了一個.gitignore
文件,您可能會遇到特定文件正在被跟踪,或者模式似乎不如預期工作的情況。本部分將涵蓋兩個常見的故障排除領域以及如何解決它們。
跟踪已提交的文件
.gitignore
文件不會反向應用於已經提交的文件。
如果在某些文件已經提交後將一個模式添加到.gitignore
中,Git將繼續跟踪它們,即使它們與.gitignore
文件中的模式匹配。
要停止跟踪已經提交的文件,請按照以下步驟進行:
- 從 Git 追蹤中刪除檔案: 使用
git rm
命令從存儲庫中刪除它們,同時保留在您的工作目錄中。
git rm --cached <file_or_directory_name>
- 提交更改: 從 Git 追蹤中刪除檔案後,提交更改以確保這些檔案不再是版本控制歷史的一部分。
git commit -m "Stop tracking ignored files"
- 將更改推送到遠端存儲庫:最後,將更改推送到遠端存儲庫,以確保這些檔案不再被追蹤。
git push
執行這些步驟後,Git 將停止追蹤這些檔案。已提交的檔案仍然會存在於您的工作目錄中,但將根據您的 .gitignore
模式被忽略。
確保模式正常運作
有時,您可能會注意到某些您預期被忽略的特定檔案仍然出現在 Git 的狀態中或正在被追蹤。
遵循這些步驟以確保您的 .gitignore
模式正常運作:
- 檢查檔案狀態: 使用
git status
命令來查看哪些檔案正在被 Git 追蹤。這將幫助您確認被忽略的檔案是否仍然列出。
git status
- 確保模式正確:仔細檢查您的
.gitignore
模式的語法,以確保其格式正確。例如: - 確保您使用正確的目錄路徑(相對於存儲庫的根目錄)。
- 添加
/
以針對特定目錄,以防止追踪所有具有類似名稱的文件。
- 刷新緩存:如果您最近更新了
.gitignore
文件,但更改未應用,可能是 Git 仍保留其先前的緩存。要刷新緩存,運行以下命令:
git rm -r --cached . git add . git commit -m "Refresh .gitignore"
- 檢查例外情況:有時,
.gitignore
中的特定模式可能會被文件中其他地方的更具體模式覆蓋。檢查您的規則,以確保沒有衝突的模式。
尋找快速的 Git 參考嗎?保持您手邊關鍵命令的可用性,請參考這份 Git 速查表。
結論
一個 .gitignore
文件看似微小,但在保持您的 Git 儲存庫乾淨可管理方面卻扮演著重要角色。通過忽略不必要的文件——如依賴項、構建產物和系統生成的文件——您可以確保您的項目保持有序,避免雜亂。
在本教程中,您已经学会了如何创建一个.gitignore
文件,添加模式,并应用最佳实践来保持您的代码库高效。有了这些技能,您将避免版本控制方面的问题,并使团队中的每个人协作更加顺畅。
如果您想深入了解Git技能,请查看Git基础,这是一个结构化的学习路径。您也可以探索实践课程,比如Git基础和GitHub概念介绍,以建立对版本控制和协作工作流的扎实理解!