.gitignore 的使用方法:帶範例的實用介紹

在使用 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概念介绍,以建立对版本控制和协作工作流的扎实理解!

Source:
https://www.datacamp.com/tutorial/gitignore