在使用git對項目進行版本管理的時候,我們總有一些不需要提交到版本庫里的文件和文件夾,這個時候我們就需要讓git自動忽略掉一下文件。
使用.gitignore忽略文件
為了讓git忽略指定的文件和文件夾,我們需要在項目的根目錄當中創建.gitignore文件,使用.gitignore文件的方式很簡單,在.gitignore文件當中,一行代表一條忽略規則,如果是一個帶“.”這種有后綴的字符串那么git就會忽略這個文件。“*”表示的就是選中所有,如果沒有“.”就表示一個文件夾。下面舉個例子。
比如我的項目想忽略掉.idea這個文件夾,直接輸入:
.idea/
如果想忽略掉所有的后綴為json的文件,那么就輸入:
*.json
注意:.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。
刪除文件的追蹤
.gitignore 文件的用途,只能作用於 Untracked Files,也就是那些從來沒有被 Git 記錄過的文件(自添加以后,從未 add 及 commit 過的文件)。
對於已經提交過文件,想要讓ignore生效, 也是有辦法的:
- 使用git rm --cached從 Git 的數據庫中刪除對於該文件的追蹤;
- 把對應的規則寫入 .gitignore,讓忽略真正生效;
- 提交+推送。
只有這樣做,所有的團隊成員才會保持一致而不會有后遺症,也只有這樣做,其他的團隊成員根本不需要做額外的工作來維持對一個文件的改變忽略。
最后有一點需要注意的,git rm --cached
刪除的是追蹤狀態,而不是物理文件;如果你真的是徹底不想要了,你也可以直接 rm -->
忽略 --> 提交+推送。
舉個例子, 比如要刪除.idea文件下的workspace.xml
git rm --cached .idea/workspace.xml
這樣就可以刪除掉workspace.xml的文件跟蹤了, .gitignore內的忽略規則就會真正生效。
暫時忽略某個文件的修改
開發過程中可能還會遇到這樣的情況,某個文件沒有修改好,但是又要提交代碼, 想這次忽略這個文件,下一次提交時再去提交它。
git update-index --assume-unchanged
-
git update-index --assume-unchanged
,這樣 Git 暫時忽略你對文件做的修改; - 當你的工作告一段落決定可以提交的時候,重置該標識:
git update-index --no-assume-unchanged
,於是 Git 只需要做一次更新,這是完全可以接受的了; - 提交並推送代碼到遠程庫