You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.gitignore配置清缓存后仍不生效,GitHub推送大文件报错解决

问题原因

报错本质是对Git和GitHub的两个机制存在认知偏差:

  • .gitignore规则仅对从未被Git纳入跟踪的文件生效。只要文件曾经被git add加入过本地Git索引,哪怕从来没推送到远程仓库,后续再加忽略规则也不会自动把它从已有的提交记录里移除。
  • GitHub推送时的大文件校验,会扫描本次待推送的所有提交中的每一个文件对象,不是只检查最新一次提交的文件状态。你虽然在最新提交里删除了latin/files/lasla_db.pkl,但这个217MB的文件早就存在于本地领先远程的未推送提交历史中,推送时这些历史提交里的大文件会被一并传到GitHub,自然会触发100MB的单文件大小限制拦截。

顺便提一句,你之前执行缓存清理时敲错了文件名,命令里写的是lasla_db2.pkl,和实际要处理的lasla_db.pkl不是同一个文件,但这不是核心诱因——就算你当时删对了缓存、提交了删除操作,只要历史提交里留存过大文件,一样会被拦截。

解决方法

按顺序执行以下操作,把大文件从本地所有提交历史里彻底清除后即可正常推送:

  • 遍历所有本地提交,删除全量历史记录里的目标大文件:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch latin/files/lasla_db.pkl' \
--prune-empty -- --all
  • 清理Git残留的备份引用和冗余对象,彻底删除大文件的缓存碎片:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now --aggressive
  • 执行git status确认仓库状态无异常后,重新运行git push -u origin master即可完成推送。

后续避坑:新增.gitignore规则后,先执行git check-ignore -v <文件路径>验证规则是否真的匹配到了目标文件,确认文件不会被Git跟踪之后再执行git add .提交,就能避免这类大文件误提交的问题。

内容的提问来源于stack exchange,提问作者bobsmith76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:06:25