前言
在《项目部署与拉取Github/Gitlab/Gitee的合理步骤以及会遇到的问题》这篇博客中,我遇到了两个 .gitignore 失效的原因。今天又遇到一个,遂作总结。
正文
第一个可能的原因
一定要把 .gitignore 放到根目录下,它只会对当前目录下的文件进行忽略。
第二个可能的原因
在最初 git add
时并没有添加 .gitignore。.gitignore只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。
git rm -r --cached .
git add .
git commit -m 'Update .gitignore'
第三个可能的原因
在 Mac 终端中(zsh,Mac 默认 Shell,比 Bash 更强大),命令输出若末尾无换行符(\n),zsh 会添加 %。这样的好处是下一个命令发现 % 会自动换行,不容易混乱(比如 (base) xxxMacBook-Pro Redis_Application %
这个开头,不会跟到 .ipynb_checkpoints/%
后面,而是另起一行)。
最终 .gitignore 过滤的是 .ipynb_checkpoints/%
,这并不是一个正确的目录,所以 .gitignore 失效。
并且用编辑器打开是发现不了的。
如何解决呢?多空一行即可。