💡 前言
昨天我們學會了如何在 VS Code 內進行基本的 Git 提交與推送。然而,在將專案推送到 GitHub 之前,你有沒有想過:像動輒幾百 MB 的 node_modules 資料夾、包含資料庫密碼的 .env 設定檔,或是作業系統產生的隱藏暫存檔,真的需要跟著程式碼一起上傳到雲端嗎?
答案是:絕對不行! 為了保護機密資料並保持專案輕量,我們需要透過 .gitignore 檔案來精準過濾不需要加入版控的檔案。今天 Day 14 就來帶大家掌握 .gitignore 的核心規則與寫法!
🎯 本篇重點
.gitignore?(資安危機與容量肥大)
.gitignore 的基本語法規則
🛡️ 1. 為什麼一定要設定 .gitignore?
如果沒有設定忽略規則,直接把專案推上 GitHub,通常會遇到兩個大麻煩:
• 資訊安全外洩:
如果你把 API 金鑰、資料庫密碼或 JWT Secret 直接寫在程式碼或 .env 檔案中並 Push 到公開倉庫,不到幾分鐘就會被自動化腳本掃走,造成帳號被盜或產生巨額雲端帳單。
• 專案肥大與重複下載:
像 Node.js 專案的 node_modules 裡面動輒有幾萬個小檔案,容量高達數百 MB。其實這些依賴套件只要透過 npm install 就能在任何電腦上重新下載,完全不需要加入 Git 版本控制。
📝 2. .gitignore 的基本語法規則
在專案根目錄建立一個名為 .gitignore 的純文字檔案(注意前面有一個點 .),每一行代表一條忽略規則:
• 忽略特定資料夾:node_modules/ (結尾加斜線代表這是一個資料夾)
• 忽略特定副檔名檔案:*.log (忽略所有副檔名為 .log 的檔案)
• 忽略特定檔案:.env (忽略環境變數檔案)
• 例外保留規則 (!):
若想忽略某個資料夾,但保留其中的特定檔案,可以使用 ! 符號:
temp/
!temp/keep.git
📋 3. 實用 .gitignore 範例(可直接複製)
以下是一份涵蓋前端、後端與作業系統暫存檔的通用 .gitignore 範本,適用於多數 JavaScript / Python 專案:
# --- 1. 系統與編輯器暫存檔 ---
.DS_Store
Thumbs.db
.vscode/
*.suo
*.ntvs*
*.njsproj
*.sln
*.swp
# --- 2. 依賴套件與打包輸出 ---
node_modules/
jspm_packages/
dist/
build/
*.pyc
__pycache__/
# --- 3. 環境變數與機密設定 ---
.env
.env.local
.env.*.local
# --- 4. 偵錯與日誌檔 ---
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
logs/
*.log
🛠️ 4. 實用小技巧:如果檔案已經被 Commit 了怎麼辦?
有時候我們不小心已經把 node_modules 或 .env 提交到 Git 紀錄中,才寫 .gitignore 會發現它沒有生效。
解決步驟:
git rm -r --cached node_modules
.gitignore 檔案。