向.gitignore添加忽略规则不生效,推送时忽略文件仍上传GitHub
问题排查结论
这不是Git的bug,属于操作逻辑问题:.gitignore仅对从未被Git纳入追踪的新文件生效,如果你在添加.gitignore规则前,已经对Web.config执行过git add、git commit操作,该文件已经存在于本地Git的提交历史中,后续新增的忽略规则不会自动清理已有的追踪记录,因此推送时依然会同步到远程仓库。
修复操作步骤
- 先校验.gitignore规则的准确性:如果需要忽略项目根目录下的Web.config,规则写
/Web.config;如果需要忽略项目所有目录下的Web.config,直接写Web.config即可,避免规则匹配错误导致忽略失效。 - 将目标文件从Git追踪列表中移除,同时保留本地的实际文件不删除,执行命令:
git rm --cached Web.config
如果需要批量清理所有已被追踪、但符合当前.gitignore规则的文件,可以执行git rm --cached . -r,执行前务必确认.gitignore规则已配置正确,避免误删追踪记录。 - 提交本次变更:
git commit -m "移除无需追踪的文件,更新.gitignore规则" - 推送本地提交到远程仓库即可,如果你需要覆盖远程的错误提交历史可以按需使用
git push -f,注意多协作者的仓库强制推送前要同步状态,避免覆盖他人提交记录。
内容的提问来源于stack exchange,提问作者Joe Black
相关产品推荐
相关产品推荐

