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

Git推送失败:项目卡在本地已不存在的大文件上

解决GitHub推送卡在本地已删除大文件的问题

我之前也碰到过一模一样的坑!这种情况本质是Git的历史记录里还残留着那个大文件的痕迹——哪怕你本地已经把文件删得干干净净,推送时Git还是会试图把历史里的文件同步到远程,尤其是你用了LFS但没处理好追踪记录的时候。下面分场景给你具体的解决方案:

一、如果大文件是在最近未推送的提交里

如果这个大文件是你最近几次提交中添加又删除的,还没推送到远程,那用交互式变基就能快速搞定:

  1. 先找出包含这个大文件的提交范围,比如最近3个提交就写HEAD~3:
    git rebase -i HEAD~3
    
  2. 在弹出的编辑器里,把涉及大文件的那行的pick改成edit,保存退出。
  3. 移除这个文件的追踪(哪怕本地没有,也要从当前提交里彻底删掉):
    git rm --cached "你的大文件名"
    
  4. 提交这个修改,保持原提交信息不变:
    git commit --amend --no-edit
    
  5. 继续完成变基:
    git rebase --continue
    
  6. 现在再尝试推送:
    git push origin master
    

二、如果大文件在更早的历史提交里

要是这个大文件是很久以前的提交里的,那得彻底清理Git历史里的所有痕迹,推荐用git filter-repo(比旧的filter-branch更安全高效):

  1. 先确认你安装了git filter-repo(新版Git自带,没装的话用包管理器安装即可)。
  2. 运行命令清除所有历史中涉及这个大文件的记录:
    git filter-repo --path "你的大文件名" --invert-paths
    
  3. 因为修改了历史记录,需要强制推送到远程(⚠️ 注意:如果有其他协作者在这个分支工作,一定要提前通知他们,强制推送会覆盖远程分支的历史):
    git push origin master --force
    
  4. 其他协作者拉取时需要执行:
    git fetch origin
    git reset --hard origin/master
    

三、针对Git LFS的额外处理

如果你之前用LFS追踪过这个文件,还要处理LFS的追踪记录:

  1. 先查看当前LFS的追踪列表,确认这个文件还在不在:
    git lfs track
    
  2. 如果还在,取消对它的追踪:
    git lfs untrack "你的大文件名"
    
  3. 提交这个修改:
    git commit -m "停止用LFS追踪该大文件"
    
  4. 清理LFS的本地缓存:
    git lfs prune
    
  5. 再按照前面的步骤处理历史记录即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:51:05