一,问题现象
在已经提交过的git管理的项目中,新增加一个.gitignore文件,或者修改.gitignore文件之后,新增的内容不生效。
二,问题原因
因为我们误解了.gitignore文件的用途,该文件只能作用于Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
之所以你的规则不生效,是因为那些 .log 文件曾经被 Git 记录过,因此.gitignore对它们完全无效。
三,解决方法
1,从 Git 的数据库中删除对于该文件的追踪;
2,把对应的规则写入.gitignore,让忽略真正生效;
3,提交+推送。
具体指令:
git rm -r --cached .
git add .
git commit
四,举例说明
1,先gcc编译main.c生成a.exe,并将a.exe提交到git记录。然后再修改main.c重新生成a.exe,添加.gitignore,将*.exe添加到.gitignre中。
2,将main.c修改和添加.gitignore提交到git,此时git st查看,只有.exe修改:
3,准备工作完成之后,接下来执行上述3个步骤,来将*.exe文件被git忽略
将所有的修改全部删除:
然后再添加所有的修改:
再次修改main.c生成.exe就不会被git识别到了。
五,总结
本文记录了.gitignore不生效的原因和解决方法,供参考。