.gitignore不起作用的解决方案

.gitignore文件的作用是让git在版本控制时忽略一些文件,知道哪些文件不需要添加到版本库中,像是jar包、.iml项目文件等等。但有时候发现明明在.gitignore忽略的文件,还会出现在版本库中,.gitignore好像无效了,不起作用!!! 这里就简单说明一下问题的原因。

首先说下.gitignore文件。虽然使用git可以对任何文件进行版本控制,包括源代码、二进制文件、配置文件、甚至视频等多媒体文件。但是,通常在项目中不需要对某些文件进行版本控制。比如jar文件,有的jar文件甚至有100多兆,而且每次编译都会重新生成,也根本没必要进行版本控制。所以,定义.gitignore文件还是很有必要的。

.gitignore文件跟.git在同级目录下,通常在项目的根目录下。在git init初始化时,会生成.git文件夹(隐藏的),但默认是不会生成.gitignore文件的。所以,需要手动添加.gitignore文件,然后可以参考这个项目,确定哪些文件可以被忽略:https://github.com/github/gitignore

出现.gitignore文件无效的原因就是,在git初始化时,忘记添加.gitignore文件了。已经add commit push过了之后,才添加.gitignore文件。.gitignore文件只对还没有加入版本管理的文件起作用,已经添加到版本管理中的文件,.gitignore也不会负责删除。

这样的话,只能手动删除缓存中的文件,然后再add、commit、push。运行如下命令:

1
2
3
git rm -r --cached .
git add .
git commit -m "gitignore重新配置"

之后,.gitignore就起作用了。注意每次修改.gitignore都需要清除缓存啊。