Git LFS执行git pull时报[404] Object does not exist错误如何解决
你提出的两个方案都可行,具体操作步骤和其他可选方案如下:
方案一:无需修改远程仓库,直接完成拉取
该方案适配你不在意旧文件是否被LFS跟踪的需求,比你设想的切换到旧提交的操作更简便:
- 先临时关闭当前仓库对pdf文件的LFS拉取检测:
git config lfs.fetchexclude "*.pdf" - 执行正常
git pull拉取所有内容,此时旧的test.pdf会直接从Git原生存储拉取,不会触发LFS查询404报错 - 拉取完成后如果需要后续新增的pdf文件走LFS拉取,清除临时配置即可:
git config --unset lfs.fetchexclude "*.pdf"
如果你坚持按自己原本的思路操作,也可以先执行
git checkout <LFS配置前最后一个commit的哈希>,拉取到test.pdf后再执行git pull拉取后续提交,最终效果一致。
方案二:手动将旧test.pdf加入LFS,一劳永逸解决所有设备拉取问题
该方案适合需要统一所有pdf文件走LFS管理的场景,需要在已存储完整test.pdf文件的设备1上操作:
- 强制将存量test.pdf纳入LFS跟踪:
git lfs track --force "test.pdf" - 提交改动并推送到远程仓库:
git add .gitattributes test.pdf git commit -m "add historical test.pdf to LFS" git push - 回到设备2直接执行
git pull即可正常完成拉取,不会再触发404报错。
临时快速解决方法
如果只是需要临时完成pull,后续可以手动补文件,可以直接跳过该LFS对象的拉取:
- 先执行LFS拉取排除指定文件:
git lfs pull --exclude "test.pdf" - 再执行普通
git pull即可完成代码更新,缺失的test.pdf可以手动从其他设备拷贝到对应目录。
内容的提问来源于stack exchange,提问作者ru111
相关产品推荐
相关产品推荐

