GIT历史存在大文件的解决办法

问题触发

在今天迁移项目的时候,触发了一个报错无法推送 refs 到远端。您可以试着运行"拉取"功能,整合您的更改。看了看报错日志发现问题在这里:remote: Find the desired index: b4fc9cd2860327f09ae017bb50ecdadc9fc7d76a, size: 134.975MB, exceeds quota 100MB

可以看出是因为历史大文件导致的无法成功推送。

问题解决

1.找到这个大文件是什么

首先我们使用如下命令去找到这个大文件是什么:

cmd 复制代码
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '/^blob/ {if ($3 > 100000000) print substr($0,53)}'

一般会返回如下的值

415 XXX.jar

在这个数据里面 415代表的是大小 415M, 后面就是代表着他的文件名称。

2.在历史中删除该文件

现在考虑使用git filter-repo工具

2.1.安装 filter-repo

安装git-filter-repo(如果尚未安装):

bash 复制代码
pip install git-filter-repo

2.2 根据大小删除文件

这个是根据大小来删除文件的办法 可以删除 100M以上的文件

bash 复制代码
git filter-repo --strip-blobs-bigger-than 100M

3.清理本地仓库

这一步是为了防止有缓存等影响之后的数据:

ini 复制代码
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git count-objects -vH  # 检查仓库大小

4.强制推送清理后的历史

css 复制代码
git push origin master --force

结束

补充说明

如果上述没有办法解决, 也可以试试 备选方案:手动创建新仓库。

相关推荐
苏三说技术6 小时前
2026编程圈很火的10个Skills
后端
前端H6 小时前
微前端 v3 架构升级:从加载隔离到状态协同
前端·架构·状态模式
用户8356290780516 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python
敲代码的嘎仔7 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
编程(变成)小辣鸡7 小时前
Spring事务失效场景
java·后端·spring
PinkSun7 小时前
MySQL 建表报 1030,能查不能建,排查 1 小时发现是我自己改了一行权限
后端
陆枫Larry7 小时前
小程序包体积优化:用 SVG 图片替换 iconfont,并保留 CSS 控色能力
前端
刘马想放假7 小时前
Git 从入门到进阶:一篇吃透版本管理的实战指南
git·gitlab
无相求码7 小时前
为什么 printf 可以接受任意数量参数?变长参数的底层真相
后端
郡杰7 小时前
Boot:MP|测验|结果封装|异常处理|前后联调|拦截器
后端