Git是跟蹤項目中所有文件的好工具,
但是,您會希望在項目的整個生命周期中不要跟蹤某些文件及其變更
。
- 系統文件(i.e. Mac系統的.Ds_Store)
- 應用程序配置文件(i.e. app.config, .env)
- 構建組件(i.e. *.pyc)
- 安裝的依賴(i.e. node_modules)
- 個人文件(i.e. todo.txt)
- 應用程序數據和日志(i.e. .log,.sqlite)
Git中gitignore
概念:以.gitignore文件定義哪些文件將被Git排除跟蹤
, 被.gitignore匹配到的文件將不會顯示在Git的Untracked files
列表。
使用.gitignore防止跟蹤文件
.gitignore文件控制Git倉庫中應排除跟蹤的文件(可由文件類型、路徑、通配符等確立)。
- Visual Studio
使用VS為項目創建(或連接)代碼倉庫時,Visual Studio自動在倉庫中創建.gitignore文件 - 下載.gitignore模板
從https://github.com/github/gitignore下載特定項目類型的.gitignore文件模板,修改以充分適配你的項目
Git將.gitignore應用於文件夾及其子文件夾,建議您將.gitignore放在存儲庫的根文件夾中,以免造成混淆。
實踐中有時會在項目子目錄
嵌套定義.gitignore文件
, 雖然不常見,但對於有特定規則的子目錄,嵌套定義.gitignore文件有用。
自定義.gitignore
只要你修改了.gitignore文件,Git立即開始忽略這些文件;如果你希望團隊成員都忽略相同的文件,請提交這次git變更。
.gitignore中的每一行都排除一個文件或一組(與模式匹配的)文件, .gitignore語法很靈活:
# 忽略單個文件
mycode.class
# 忽略整個目錄
/mydebugdir/
# 忽略文件類型
*.json
# 將前置規則取反,這個文件將被Git跟蹤
!package.json
Windows使用者注意:.gitignore文件中的路徑使用
正斜杠分隔符,而不是反斜杠
已經提交的文件,再忽略變更
臨時忽略變更
在開發階段,有時候要臨時忽略文件變更,特別是你拿到源代碼需要針對本地環境做一些修改有用
git update-index --skip-worktree <file>
恢復文件追蹤
git update-index --no-skip-worktree <file>
永久忽略文件變更
如果文件已經被Git跟蹤,再將這個文件添加到.gitignore文件並不會忽略文件變更。
你需要從Git Index中移除這個文件的信息:
- 在.gitignore文件中添加這個文件
- 從Index移除文件信息
git rm --cached <file>
- 提交刪除文件和更新的.gitignore到您的倉庫
以上步驟不會從系統中刪除文件,只是告訴Git以后忽略該文件的變更
附1. 僅在個人系統中忽略文件
.gitignore文件被提交並推送之后,就會在團隊共享。
若只想在你的系統上排除文件,請編輯倉庫中的.git/info/exclude
文件: 修改這個文件不會共享給其他人,這個動作只對這個倉庫有效
附2. 系統中跨倉庫忽略文件
利用git config
工具建立全局.gitignore文件,
git config core.excludesfile C:\Users\frank\.gitignore_global
這個操作幫助你全局忽略
絕不會提交的文件類型,比如編譯文件
總結
通過本文你將學習到:
- 使用.gitignore阻止Git跟蹤文件
- 對已提交的文件忽略變更
附1. 只在你的系統上忽略文件
附2. 在你的系統上跨倉庫忽略文件
看到了Git為我們提供一種機制,告訴我們不應在存儲庫中跟蹤哪些文件,
這是一項強大的功能,可提供豐富的語法以及層次結構,以更好地控制哪些文件被忽略以及哪些文件未被忽略。