Git推送因缺失或损坏本地LFS对象被拒绝该如何解决?
Git LFS 推送文件缺失错误解决方案
1. 先确认完整报错信息
打开Git Bash进入项目根目录,执行git push获取完整报错,确认是否为LFS对象缺失类报错,排除普通Git文件冲突、权限不足等其他问题。
2. 修复LFS本地对象异常
即便对应路径的源文件存在,也可能出现LFS指针指向的哈希对象缺失的问题,按以下步骤修复:
- 执行
git lfs fsck扫描本地所有LFS对象的完整性,定位缺失的对象哈希 - 执行
git lfs fetch --all从Bitbucket远程仓库拉取全量历史LFS对象,补全本地缓存缺失的内容 - 执行
git lfs push --all origin强制推送本地所有存在的LFS对象到远程仓库
3. 修复Visual Studio提交导致的暂存异常
Visual Studio的内置提交功能偶发不会触发Git LFS的pre-commit钩子的问题,会导致提交内容中LFS指针和实际文件不匹配:
- 注意:执行以下操作前务必备份所有尚未提交的本地改动,避免文件丢失
- 执行
git rm --cached -r .清空本地暂存区 - 执行
git reset --hard HEAD将工作区重置到最后一次正常提交的状态 - 手动执行
git add .触发LFS钩子自动处理大文件生成对应指针 - 执行
git commit -m "修复LFS指针匹配异常"重新生成提交 - 再次执行
git push验证是否可以正常推送
4. 验证Bitbucket仓库配置
- 确认Bitbucket对应仓库的LFS功能已开启,且LFS存储剩余配额足够容纳待推送的文件
- 执行
git config lfs.url检查本地LFS地址配置是否和Bitbucket仓库的LFS地址匹配,若不匹配可执行git config lfs.url 你的Bitbucket仓库地址.git/info/lfs手动修正
内容的提问来源于stack exchange,提问作者anthun
相关产品推荐
相关产品推荐

