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 倉庫中應排除跟蹤的文件(可由文件類型、路徑、通配符等確立)。你和你的團隊可以隨時更新這個文件來控制忽略哪種類型的文件。
創建.gitignore文件
- Visual Studio
使用VS爲項目創建(或連接)代碼倉庫時,Visual Studio 自動在倉庫中創建.gitignore
文件。 - 下載
.gitignore
模板
從 https://github.com/github/gitignore 下載特定項目類型的`.gitignore文件模板,修改以充分適配你的項目。
Git 將.gitignore
應用於文件夾及其子文件夾,建議您將.gitignore
放在存儲庫的根文件夾中,以免造成混淆。
實踐中有時會在項目子目錄嵌套定義.gitignore文件, 雖然不常見,但對於有特定規則的子目錄,嵌套定義.gitignore文件有用。
自定義.gitignore
只要你修改了.gitignore
文件,Git 立即開始忽略這些文件;如果你希望團隊成員都忽略相同的文件,請提交這次 git 變更。
.gitignore
中的每一行都排除一個文件或一組(與模式匹配的)文件, .gitignore
語法很靈活:
# ignore a single file
mycode.class
# ignore an entire directory
/mydebugdir/
# ignore a file type
*.json
# add an exception (using !) to the preceding rule to track a specific file
!package.json
Windows 使用者注意:.gitignore 文件中的路徑使用正斜槓分隔符,而不是反斜槓
忽略已提交文件中的變化
臨時忽略變更
在開發階段,有時候需要臨時忽略本地倉庫中已提交的文件的變更。例如,你的配置文件與本機的工作環境或者項目配置有關,那麼這個操作就非常有用:
git update-index --skip-worktree <file>
當然也可以恢復文件的追蹤:
git update-index --no-skip-worktree <file>
也可以通過以下方式進行。這主要是爲了防止文件被開發者修改。
關閉變更追蹤:
git update-index --assume-unchanged <file>
恢復變更追蹤:
git update-index --no-assume-unchanged <file>
永久忽略文件變更
如果一個文件已經被 Git 跟蹤,那麼再將這個文件添加到 .gitignore
中並不會忽略文件變更。你還需要從Git 暫存區(index)中移除這個文件的信息,步驟如下:
- 在
.gitignore
中添加這個文件 - 從暫存區移除文件信息:
git rm --cached <file>
- 提交刪除文件和更新的
.gitignore
到您的倉庫
注:以上步驟不會從系統中刪除文件,只是告訴Git以後忽略該文件的變更
僅在個人系統中忽略文件
.gitignore
文件被提交併推送之後,就會在團隊共享。若只想在你的系統上排除文件,請編輯本地倉庫中的.git/info/exclude
文件, 修改這個文件不會共享給其他人,這個動作只對此本地倉庫有效。
在個人系統中忽略所有倉庫的特定文件
利用git config
命令建立全局.gitignore
文件:
git config core.excludesfile C:\Users\frank\.gitignore_global
這個命令幫助你忽略所有的絕不會提交的文件類型,比如編譯文件。