今天在项目里添加了一个新的文件,发现被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规则将不生效,无法忽略该文件,这是常见的一种场景。这时你会怎么做?
- 删掉这个文件,提交git,然后添加.gitignore规则,然后再找回文件。这样是可以,但是没必要这么麻烦。
- 删除git的文件跟踪缓存,然后添加.gitignore规则:
git rm --cached FILENAME
不过如果项目共享了,其他人应该也需要这么操作,如果没有提交到远程库可以采用这种方法。
参考:
https://help.github.com/artic...
这个文件提供了一些通用忽略规则:
https://gist.github.com/octoc...