技术与生活 / 一篇记录
写进 .gitignore,为什么 Git 还在跟踪?
忽略规则主要影响未跟踪文件,不会自动解除已有文件的跟踪。
忽略规则控制的是候选文件是否被加入跟踪。已经进入版本库的文件拥有自己的历史,新增一条规则不会自动把它从索引和过去的提交中移走。
从一个例子看起
以下示例应在测试仓库中使用;远端和分支名需要按项目实际配置替换。
git check-ignore -v --no-index demo.log
检查是哪一条规则命中目标路径。
排查时再往前走一步
先区分文件是已跟踪还是未跟踪,再检查规则来源。包含密码的文件即使从当前版本移除,历史副本仍可能存在,凭据需要单独处理。
忽略规则还受到目录层级与规则顺序影响。git check-ignore -v 能显示命中来源,适合处理一条规则看起来正确却没有效果的情况。不要靠连续追加重复规则来碰运气。
秘密一旦提交,删除文件或忽略路径都不能撤销已经泄露的凭据。
参考:Git 文档。