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

Git推送提示文件过大 删除文件后仍报错无法推送问题咨询

问题核心原因

你删除本地文件、配置.gitignore、接入Git LFS后仍然推送失败,核心原因是182.47MB的file.csv已经存在于当前待推送的提交历史中。GitHub的预接收钩子会扫描所有待推送提交的全量文件快照,而非仅检查最新提交的工作区内容。
你执行git rm -r --cached file.csv返回路径不匹配错误,是因为该文件早已不在当前工作区和暂存区,但仍然残留在之前未推送的某一笔提交的快照里,上述操作都没有触碰到这部分历史记录。

解决步骤

方案一:全量清除提交历史中的大文件(官方推荐,适配所有场景)

使用Git官方维护的git filter-repo工具(替代老旧的git filter-branch)清理历史,操作最稳妥:

  • 先确认大文件对应的提交记录,验证排查方向:
    git log --oneline localbranch -- file.csv
    
    执行后会列出所有未推送的、涉及file.csv改动的提交。
  • 执行清理命令,将file.csv从当前分支的所有提交快照中彻底移除:
    git filter-repo --path file.csv --invert-paths
    
    若系统提示找不到该命令,Windows环境可重新运行Git安装向导勾选对应组件,或通过pip install git-filter-repo安装。
  • 清理完成后执行强制推送即可:
    git push -u origin localbranch --force
    

方案二:仅重写近期提交(适合确定大文件是最近几次提交误加的场景)

如果能确认file.csv是最近几笔本地提交时才不小心加入的,不需要清理更早的历史,可以用更轻量的操作:

  • 先找到本地分支上一次成功推送到远程的提交哈希(例如下方示例用abc123指代该哈希),执行软重置回到该节点:
    git reset --soft abc123
    
  • 此时之前几次提交的所有改动都会回到暂存区,确认暂存区不存在file.csv后,重新提交变更:
    git commit -m "提交变更,移除误添加的大文件"
    
  • 正常执行推送即可。
之前操作无效的原因说明
  • 删除本地文件:仅移除工作区的文件副本,已经写入提交快照的内容不会发生任何改变
  • 配置.gitignore:仅对规则生效后新增的未追踪文件生效,已经进入提交历史的文件不受忽略规则约束
  • 配置.gitattributes接入Git LFS:仅对配置完成后新提交的文件生效,之前已经提交到历史中的大文件不会自动转换为LFS指针文件
  • 执行git rm --cached file.csv:该命令仅能操作当前暂存区已追踪的文件,文件早已不在当前暂存区时就会返回路径不匹配错误,无法清理旧提交里残留的文件。

注意:重写提交历史的操作仅适用于你个人独立使用的特性分支,不要对已经推送至远程、有其他协作者基于其开发的公共分支执行这类操作,避免影响其他人的代码同步。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:03:27