启用Git LFS后Bitbucket仓库仍超4GB限制,无法推送该如何解决?
解决Bitbucket仓库超4GB限制且Git LFS推送失败的问题
问题核心
你遇到的问题是Git LFS仅处理了本次提交的新大文件,但仓库历史中已存在的同类型大文件仍占用存储空间,导致仓库总大小依旧超出限制。直接回退提交会丢失未同步的变更,因此需要在保留当前变更的前提下,清理历史中的大文件。
具体解决步骤
1. 暂存未推送的变更
先把当前未推送的本地变更暂存,避免丢失:
git stash
2. 迁移历史中的大文件到LFS
使用git lfs migrate重写仓库历史,将所有分支、标签里的jpg、png、pdf、mp4文件替换为LFS指针:
git lfs migrate import --include="*.jpg,*.png,*.pdf,*.mp4" --everything
注意:
--everything会处理所有历史记录,执行前确保没有未提交的本地变更(已通过git stash暂存)。
3. 强制推送重写后的历史
重写历史后需要强制推送到远程仓库:
git push --force
4. 恢复暂存的变更
把之前暂存的未推送变更恢复到本地:
git stash pop
5. 重新提交并推送
检查变更内容无误后,重新提交并推送:
git add . git commit -m "提交未同步变更,全历史大文件已迁移至LFS" git push
6. 后续检查与补充
推送完成后,登录Bitbucket查看仓库总大小:
- 若仍超限制,检查是否有其他类型大文件未纳入LFS,重复步骤2添加对应通配符
- 清理仓库中无需保留的历史大文件(如已删除的旧文件)
- 必要时购买Bitbucket的LFS额外存储空间
Bitbucket官方指引
如果这些文件确实需要纳入Bitbucket仓库,请使用您套餐中的大文件存储(Large File Storage),必要时可购买更多存储空间。
使用通配符模式告知Git对特定类型文件使用LFS:git lfs track ""
例如,要对MP4视频使用LFS:git lfs track "*.mp4"
*上述示例中的引号非常重要。
内容的提问来源于stack exchange,提问作者user979331
相关产品推荐
相关产品推荐

