处理.gitignore规则不生效的解决办法

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需手动创建此文件)。此文件每一行保存了一个匹配的规则。
如下:

1
2
3
4
5
6
# 此为注释 将被git忽略
*.a # 忽略所有.a 结尾的文件
!.gitignore # 但.gitignore 除外
/data # 仅仅忽略项目根目录下的data文件,不包括subdir/data
lib/ # 忽略 lib/目录下的所有文件
doc/*.txt # 忽略doc/notes.txt 但不包括doc/server/arch.txt

如果在开发过程中,发现有些文件需要加入忽略规则,按照上述方法定义后发现并未生效。

原因: .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改
.gitignore 文件是无效的。

解决方法:把本地缓存删除(改变成未track状态),然后再提交:

1
2
3
git rm -r --cached .
git add .
git commit -m "update .gitignore"