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

使用Laravel Shift升级至6.x后,推送提交因缺失LFS对象失败

解决Git LFS提示文件缺失但实际存在的问题(Laravel升级场景)

问题场景

使用Laravel Shift将Laravel 5.8项目升级至6.x版本,按Shift分支的变更日志完成所有修改后,提交并推送代码时遇到Git LFS错误,提示以下文件缺失:

(missing) vendor/srmklive/paypal/tests/Mocks/samples/sample.pdf
(missing) vendor/srmklive/paypal/tests/Mocks/samples/sample2.pdf

实际检查文件路径后,确认这两个文件存在,未丢失或隐藏。尝试执行git config lfs.allowincompletepush true后,问题仍未解决。

解决方案

1. 重新确认并修复LFS追踪规则

先检查这些PDF文件是否被Git LFS正确追踪,执行以下命令重新设置追踪规则:

git lfs track "vendor/srmklive/paypal/tests/Mocks/samples/*.pdf"

然后提交.gitattributes文件的变更:

git add .gitattributes
git commit -m "Fix LFS tracking for PayPal sample PDFs"

2. 重置本地LFS对象缓存

可能本地的LFS对象缓存出现异常,执行以下命令重新拉取并校验对象:

git lfs fetch --all
git lfs checkout vendor/srmklive/paypal/tests/Mocks/samples/sample.pdf
git lfs checkout vendor/srmklive/paypal/tests/Mocks/samples/sample2.pdf

3. 排除vendor目录的Git追踪(推荐最佳实践)

vendor目录是Composer管理的依赖目录,不应该被Git(包括LFS)追踪,因为依赖可以通过composer install重新安装。按以下步骤操作:

  • 打开项目根目录的.gitignore文件,确保存在以下规则:
    vendor/
    
  • 移除已被Git追踪的vendor目录文件:
    git rm -r --cached vendor/
    git commit -m "Stop tracking vendor directory (follow Laravel best practice)"
    
    此操作从Git索引中移除vendor目录,但不会删除本地文件,后续推送时就不会再出现依赖目录的LFS问题。

4. 强制推送LFS对象

如果以上步骤无效,尝试强制推送所有LFS对象到远程仓库:

git lfs push --all origin <你的分支名称>

完成后再推送代码:

git push origin <你的分支名称>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:10:03