當你用Git管理項目時,倉庫裏可能會有很多臨時文件、個人配置、或者大文件(比如依賴包),這些文件其實並不需要被Git跟蹤。如果直接提交它們,不僅會讓倉庫變得龐大臃腫,還可能不小心把敏感信息(比如密碼)提交上去。這時候,.gitignore文件就派上用場了!它能告訴Git“這些文件不要跟蹤”,讓你的倉庫只保留真正需要的文件。
一、Gitignore是什麼?¶
.gitignore是一個文本文件,放在倉庫根目錄下(也可以放在子目錄),裏面寫滿了規則,告訴Git哪些文件/文件夾應該被忽略。規則以行爲單位,每行一個規則。
二、Gitignore的作用¶
- 保持倉庫簡潔:排除臨時文件、日誌、緩存等不需要的文件,讓倉庫只包含代碼和必要配置。
- 避免敏感信息泄露:像.env(環境變量)、個人密鑰等文件,不會被意外提交到公開倉庫。
- 提高克隆速度:忽略大文件(如node_modules)後,克隆倉庫時速度更快、佔用空間更小。
- 統一團隊規範:所有人遵循相同的.gitignore規則,避免重複的文件混亂。
三、如何創建和放置.gitignore?¶
- 位置:通常放在倉庫根目錄(與.git文件夾同級),這樣Git會自動識別。
- 命名:文件名必須是
.gitignore(無擴展名)。 - 模板參考:如果是特定項目(如Node.js、Python),可以在gitignore.io搜索對應框架的模板,直接複製到文件中。
四、核心語法規則(新手必看)¶
1. 忽略特定文件/文件夾¶
- 單個文件:直接寫文件名,如
temp.txt,忽略所有名爲temp.txt的文件。 - 整個文件夾:文件夾名後加
/,如logs/,忽略整個logs文件夾及內部所有內容。
# 忽略單個文件
temp.txt
# 忽略整個文件夾
logs/
2. 通配符批量忽略¶
*.log:匹配所有以.log結尾的文件(如app.log、debug.log)。*.tmp:匹配所有臨時文件(如cache.tmp)。*:匹配任意字符(除非有前綴/或後綴/,否則可能匹配文件夾)。
# 忽略所有日誌文件
*.log
# 忽略所有臨時文件
*.tmp
3. 遞歸忽略子目錄文件¶
**/temp.txt:**表示遞歸匹配所有子目錄,無論temp.txt在哪個層級(如src/temp.txt、deep/temp.txt都會被忽略)。
# 遞歸忽略所有子目錄下的temp.txt
**/temp.txt
4. 否定規則(排除例外)¶
如果想忽略大部分文件,但保留個別文件,用!開頭。注意:否定規則要放在前面的規則之後。
# 忽略所有.log文件,但保留debug.log
*.log
!debug.log
5. 註釋(#)¶
以#開頭的行是註釋,不會被Git解析:
# 這是日誌文件,不需要提交
*.log
# 忽略緩存文件夾
cache/
五、常見場景示例¶
1. 前端項目(Node.js/Vue/React)¶
# 依賴包(體積大,重複安裝)
node_modules/
# 環境變量(可能含敏感信息)
.env
.env.local
# 構建產物(每次構建生成,無需提交)
dist/
build/
# 編輯器緩存
.idea/
.vscode/
*.swo
*.swp
2. Python項目¶
# 編譯後的字節碼文件
__pycache__/
# 虛擬環境
venv/
env/
# 依賴包(如果未用requirements.txt)
*.egg-info/
# 臨時文件
*.pyc
*.tmp
3. 操作系統相關文件¶
# Mac系統自動生成的目錄信息文件
.DS_Store
# Windows縮略圖緩存
Thumbs.db
# Vim交換文件
*.swp
*.swo
六、已被跟蹤文件如何處理?¶
如果文件已經被Git跟蹤(如之前git add過的temp.txt),直接加.gitignore不會生效,需先刪除跟蹤:
# 查看被跟蹤的文件
git status
# 移除跟蹤(保留本地文件)
git rm --cached temp.txt
# 提交.gitignore
git add .gitignore
git commit -m "Add .gitignore to ignore temp.txt"
七、注意事項¶
- 路徑準確:避免拼寫錯誤(如
.env寫成.env.local)。 - 區分目錄和文件:
logs/忽略文件夾,logs可能匹配名爲logs的文件。 - 遞歸生效:子目錄的
.gitignore會繼承父目錄規則,除非子目錄有自己的排除規則。 - 不要忽略.gitignore自身:確保
.gitignore未被自己的規則排除,否則配置丟失。
總結¶
.gitignore是Git倉庫的“清潔工具”,掌握它能讓你的項目更整潔、更安全。剛開始可以參考現成模板(如gitignore.io),熟悉後根據項目需求靈活調整規則。記住:越簡單清晰的規則,越不容易出錯!