迁移Git仓库至Git LFS后存储未降低,原因及优化方法?
问题原因
迁移到Git LFS后仓库存储未减少,核心原因是原大文件仍保留在Git仓库的历史提交记录里。你执行的强制推送仅替换了当前分支最新提交的文件引用,但之前提交中直接存储的500MB.mp4文件还留在Git的对象数据库中,GitLab会统计所有未被清理的仓库对象,所以仓库存储配额依然被占用,加上LFS的存储就达到了1GB。
降低Git仓库存储占用的操作步骤
1. 彻底清除历史中的大文件
用官方推荐的git filter-repo工具(替代老旧的git filter-branch)清理所有历史提交里的目标.mp4文件:
- 先确认本地是否有
git filter-repo,没有的话通过系统包管理器安装 - 执行命令移除指定文件:
git filter-repo --path 你的文件路径/xxx.mp4 --invert-paths - 检查本地仓库历史,确认大文件已从所有提交中移除
2. 强制推送清理后的仓库
把清理后的本地仓库强制推送到GitLab,覆盖远程仓库的全部历史:
git push origin --force --all git push origin --force --tags
3. 触发GitLab的仓库对象清理
GitLab不会自动删除废弃的仓库对象,需要手动触发:
- 进入项目的设置 > 仓库 > 仓库清理页面
- 点击「开始清理」按钮,等待GitLab回收未被引用的对象空间
4. 验证存储配额变化
清理完成后,回到项目的设置 > 通用 > 存储配额页面查看,此时仓库存储的占用量应该会降低,不再包含原大文件的容量。
注意事项
- 清理历史会改变所有提交的哈希值,如果有其他协作者,必须通知他们重新克隆仓库,避免本地历史冲突
- 操作前确认所有需要保留的大文件都已正确迁移到LFS,防止清理后文件丢失
内容的提问来源于stack exchange,提问作者Muichirou
相关产品推荐
相关产品推荐

