有时候因为疏忽大意,没添加 .gitignore
就提交了,甚至推送到远程了,那么再想忽略提交怎么办呢?
常规方案
下面是网上流行的解决方案:
- 首先修改
.gitignore
文件,添加要忽略的 - 然后执行
git rm --cached <file>
删除跟踪记录 - 然后
git add <ignore>
暂存忽略文件的修改。 - 最后
git commit -m ""
就好啦。
其中第二步也可替换为
git rm -r --cached . # 取消所有文件的跟踪
git add . # 重新跟踪所有文件
理论上这样是没问题的。但是实际上就不同了。
GUI 的坑
如果上边的某些步骤,例如第四步,你让 GUI 客户端代劳了,那么就很容易发生诡异的事情。在 commit 之后,如果再次修改被忽略的文件,会发现这东西居然又被重新跟踪了,简直阴魂不散。
解决方案也很简单,一定要用 git bash 命令行操作,不要偷懒用 GUI。