GitHub推送代码因node_modules超大小限制被拒问题咨询
问题根因
删本地node_modules、加.gitignore没用的核心原因是:体积超标的大文件早就在之前的Git提交记录里存着了。.gitignore只对还没被Git追踪的文件生效,删除工作区文件也修改不了已经生成的提交历史,GitHub推送时会扫描所有待上传提交内的全部文件,只要历史里存在超过100MB的文件就会直接拦截。
操作步骤
- 先打开项目根目录的
.gitignore文件,确认里面已经添加node_modules/这行忽略规则,保存后把这个规则变更提交到本地。 - 清除Git缓存里被误追踪的node_modules文件,在项目根目录的终端执行命令:
git rm -r --cached node_modules
- 如果大文件是最近一次提交带进去的,直接执行以下命令修正最近一次提交即可:
git commit --amend -CHEAD
- 如果执行完上述操作推送仍报相同错误,说明大文件存在于更早的提交历史中,执行以下命令遍历清除所有历史提交里的node_modules记录:
git filter-branch --force --index-filter \ "git rm -rf --cached --ignore-unmatch node_modules/" \ --prune-empty --tag-name-filter cat -- --all
- 所有历史记录清理完成后,执行强制推送命令即可完成代码上传:
git push origin main --force
注意:强制推送会覆盖远程对应分支的现有提交记录,多人协作场景下请提前和其他协作者同步操作,避免覆盖他人代码造成版本冲突。
内容的提问来源于stack exchange,提问作者Liss
相关产品推荐
相关产品推荐

