[git] ignore文件规则失效
背景
在某次项目,发现已经将.iml
规则写进.ignore文件,但是对.iml
的修改依然会出现在changelist中。
解决方案
先引用git官网上的描述
gitignore - Specifies intentionally untracked files to ignore
.gitignore只能忽略那些没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态)
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
拓展
-
git ignore规则
- 空行不匹配任何文件,可以提高可读性
#
开头的行会被当作注释!
取反,之前被ignore的文件会重新include- 以
/
结尾的规则,只会匹配文件夹 - 规则中不包含
/
,git会查找相对于ignore的位置 - 通配符不匹配路径中的
/
- 以
**/
开头的规则匹配所有的文件夹 eg:**/target
匹配任何文件夹下的target
文件或文件夹 - 以
/**
结尾的规则递归匹配该文件夹下的所有内容 eg:src/**
匹配src下面所有的文件或文件夹 - 规则中包含
/**/
匹配0个或多个文件夹 eg:a/**/b
匹配a/b
,a/z/b
,a/d/s/b
...
-
intellij的“bug”
intellij中编辑ignore规则命中的文件时,其插件version control会短暂出现在changelist,有两个方案可以清除这个问题。
- cmd+s保存文档
- 切换application动作发生,例如从IDE切换到桌面这种动作