Skip to content
Chris Yuan | Blog
Go back

Global gitignore

Edit page

Table of contents

Open Table of contents

問題:誰該負責忽略 .idea

用 JetBrains 產品(IntelliJ IDEA、WebStorm、GoLand 等)開專案時,會在專案目錄下建一個 .idea 目錄,存放 IDE 的專案設定檔。同樣地,VS Code 會產生 .vscode 目錄,macOS 會在每個資料夾留下 .DS_Store,Vim 會產生 .swp 暫存檔。

這些檔案都不該進版控,但問題是:該放在專案的 .gitignore 裡嗎?

答案是不該。專案的 .gitignore 應只包含與專案本身相關的忽略規則(如 node_modules/dist/.env),而非特定開發者的工具產物。不是每個團隊成員都用 JetBrains,把 .idea 放進 .gitignore 等於讓專案去適應個人的工具偏好。

正確做法是讓每位開發者自己設定 global gitignore

設定方式

建立全域忽略檔案

建立一個全域的 gitignore 檔案(檔名和路徑可自訂):

touch ~/.gitignore_global

告訴 Git 使用這個檔案

git config --global core.excludesFile ~/.gitignore_global

這會在 ~/.gitconfig 中加入:

[core]
    excludesFile = ~/.gitignore_global

編輯忽略規則

~/.gitignore_global 中加入你個人開發環境會產生的檔案:

# JetBrains IDEs
.idea/
*.iml

# VS Code
.vscode/

# macOS
.DS_Store
.AppleDouble
.LSOverride

# Vim
*.swp
*.swo
*~

# Emacs
*~
\#*\#
.\#*

設定完成後,這些規則會自動套用到你電腦上的所有 Git 倉庫,不需要在每個專案的 .gitignore 重複設定。

運作原理

Git 在判斷是否忽略某個檔案時,會依照以下優先順序檢查:

  1. 命令列參數git add -f 可強制加入被忽略的檔案
  2. .gitignore(專案層級):隨專案版控,團隊共享
  3. .git/info/exclude(倉庫層級):僅限本地,不隨專案版控
  4. core.excludesFile(全域層級):你的個人設定,套用到所有倉庫

全域 gitignore 的優先順序最低,如果專案的 .gitignore 明確追蹤某個檔案,全域設定不會覆蓋它。

小結

層級檔案用途共享範圍
專案.gitignore專案產物(node_modules/dist/團隊共享
倉庫.git/info/exclude個人在特定倉庫的忽略僅自己
全域~/.gitignore_global個人開發工具產物(.idea.DS_Store僅自己

原則很簡單:專案相關的放 .gitignore,個人工具相關的放 global gitignore。這樣團隊的 .gitignore 保持乾淨,每個人也不用擔心自己的 IDE 檔案意外被提交。

參考資料


Edit page
Share this post on:

Previous Post
EKS 每個 instance node 上所能運行的 pod 數量上限
Next Post
Time-based One-time Password algorithm (TOTP)