Git LFS对象上传成功却无法推送到远程仓库求助
解决Git LFS追踪文件但push仍触发大小限制的问题
问题根源
当前版本的大文件已被LFS追踪,但Git历史提交记录中仍保留了这些文件的普通版本。GitHub的预接收钩子会扫描整个提交历史,因此即使当前版本用LFS管理,历史里的大文件依然会触发100MB大小限制。
解决步骤
备份本地仓库
先复制一份本地仓库目录到其他位置,防止操作失误丢失数据。重写Git历史,将大文件转为LFS对象
使用git lfs migrate命令批量处理历史中的大文件:- 指定具体文件处理:
git lfs migrate import --include="client/data.ms/indexes/18a4b1f0-393d-434d-9129-9f15c834fb61/data.mdb,client/meilisearch" - 批量处理所有超过100MB的文件:
git lfs migrate import --above="100MB"
该命令会重写所有提交历史,把指定大文件替换为LFS指针。
- 指定具体文件处理:
强制推送重写后的历史
因修改了历史记录,需强制推送到远程:git push origin master --force验证结果
推送完成后,执行git lfs ls-files确认所有大文件都被正确追踪,也可登录GitHub仓库查看文件是否显示LFS标识(文件旁会有"LFS"标记)。
注意事项
- 若仓库为多人协作,强制推送会覆盖远程历史,需通知所有协作者重新拉取仓库,并清理本地旧的历史分支。
- 确保本地已正确安装并初始化Git LFS(执行
git lfs install确认)。
内容的提问来源于stack exchange,提问作者Gaurav Varma
相关产品推荐
相关产品推荐

