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

Git LFS报错:服务器对象不存在[404],推送失败怎么解决?

解决Git LFS变基后推送失败的问题

问题根源

你在特性分支启用Git LFS后,本地提交的LFS对象并未推送到远程仓库。交互式变基过程中,Git需要拉取这些未上传的对象(但服务器上不存在),导致变基报错;后续推送时,远程仓库找不到对应的LFS对象,因此拒绝推送。

解决方案步骤

1. 确认本地是否保留了缺失对象的原始文件

首先通过对象ID定位对应的文件:

git lfs ls-files | grep ca46f1a

如果能找到对应文件路径,直接进入下一步;如果找不到,通过git reflog找到变基前的特性分支版本,切换过去提取原始文件:

# 查看变基前的分支提交记录
git reflog
# 切换到变基前的提交(比如记录里的feature@{1})
git checkout feature@{1}
# 复制文件到临时目录
cp xxx/src/main/resources/xxx.xxx /tmp/
# 切回变基后的分支
git checkout feature

2. 推送缺失的LFS对象到远程

如果本地已有原始文件,直接推送对象ID到远程:

git lfs push --object-id origin ca46f1a88a9c6e61b918af1ab38be3e7903b986616551f0a6f10a7ecc5730cd4

如果是从旧分支恢复的文件,先替换当前分支的对应文件,再重新提交并推送:

cp /tmp/xxx.xxx xxx/src/main/resources/xxx.xxx
git add xxx/src/main/resources/xxx.xxx
# 修正最近的提交(如果该文件在多个提交中,可能需要重新变基调整)
git commit --amend --no-edit
# 推送LFS对象和分支
git lfs push origin feature
git push origin feature

3. 修复变基后的提交历史(可选)

如果变基过程中多个提交都涉及该LFS文件,导致历史中存在大量无效的LFS指针,可以用git filter-repo清理历史(注意:此操作会改写历史,仅在本地分支未共享时使用):

# 安装git-filter-repo后执行
git filter-repo --force --replace-refs delete-no-add
# 重新推送所有LFS对象和分支
git lfs push origin --all
git push origin feature --force

4. 预防后续问题

  • 每次提交含LFS文件后,先执行git lfs push origin <分支名>确保对象上传,再推送代码
  • 变基前,执行git lfs ls-files --missing检查是否有未推送的LFS对象,确保全部上传后再变基
  • 设置Git自动推送LFS对象:git config --global lfs.pushurl origin,这样git push会自动同步LFS对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:48