.gitignore 文件添加或更新后规则无效的解决方案
项目已经提交之后,突然想忽略某个文件或目录 A,于是在 .gitignore 里添加了忽略规则。但是提交(commit)之后,发现一旦修改了 A,git 同样会检测到 A 的变化(changes) ,推送远程之后已修改的 A 也被同步到远程仓库 —— 规则无效!
这是因为,已经提交过的文件 A 从最初的未跟踪文件(Untracked files)变为已暂存(stage)状态,并被 git 及时跟踪(track)。所以之后不管提交多少次(包括修改 .gitignore),这个文件 A 一旦被修改都会被及时检测并同步更新到远程仓库。
可以使用 git 命令 git rm --cached <file>... 来清理本地暂存区中的缓存,让 A 重新成为未跟踪文件(Untracked files),然后提交
git rm -r --cached A git add . git commit -m "ignore file A"
-r 参数表示递归地清理。为求方便,也可以使用点号"."清理所有缓存 git rm -r --cached .