gitignore優先順序小結

cp1001發表於2018-01-31

今天在專案裡新增了一個新的檔案,發現被git忽略了,無法提交。即便刪除專案的.gitignore所有內容也不識別。
後來發現雖然專案的.gitignore沒問題,但是全域性的.gitignore_global裡的規則遮蔽了我新建的檔案。之前在全域性遮蔽檔案里加了一些規則,時間長了忘了,新檔案命名規則被命中而無法加入git。

優先順序是專案.gitignore > 全域性.gitignore。
全域性git檔案地址:~/.gitignore_global,可以手動建立該檔案(名字可以自定義),然後在~/.gitconfig裡配置core的引數excludesfile為剛才建立檔案的路徑:
新增這一句:

[core]
excludesfile = /Users/chenpeng/.gitignore_global

或者執行命令改變excludesfile引數:

git config --global core.excludesfile ~/.gitignore_global

此外還可以通過修改專案的.git/info/exclude檔案內容,新增忽略規則,這樣可以不用修改.gitignore檔案。隻影響本地專案。

總體優先順序 .git/info/exclude > .gitignore > .gitignore_global

一種特殊情況:
如果先新增檔案到git,再新增ignore規則將不生效,無法忽略該檔案,這是常見的一種場景。這時你會怎麼做?

  1. 刪掉這個檔案,提交git,然後新增.gitignore規則,然後再找回檔案。這樣是可以,但是沒必要這麼麻煩。
  2. 刪除git的檔案跟蹤快取,然後新增.gitignore規則:
git rm --cached FILENAME

不過如果專案共享了,其他人應該也需要這麼操作,如果沒有提交到遠端庫可以採用這種方法。

參考:
https://help.github.com/artic…
這個檔案提供了一些通用忽略規則:
https://gist.github.com/octoc…

相關文章