网站首页 > 精选教程 正文
背景
最近我遇到了一个看似简单但暗藏玄机的需求——将一个Git仓库完整迁移到另一个远程仓库。理论上,这应该是再简单不过的任务:
Done!
但现实情况往往没那么顺利……
当我 push 到新仓库时,报错了。服务器拒绝了提交,原因是这个仓库存在大文件。
问题出在哪?
其实当我们手动删除大文件只是从最新代码里移除了它们,但实际上,它们仍然藏在 Git 的历史记录里。只要有人仔细翻看 commit 历史,还是能找到被删掉的大文件(甚至是敏感数据)。
这就像:
工作目录(最新代码)→ 干干净净
Git 历史(隐藏记录)→ 仍然藏着之前的文件
为了解决这个问题, 就需要彻底清理 Git 历史中的大文件,让仓库瘦身,成功 push 到新服务器!
准备示例
下面我们在Gitee上新建一个远程仓库来完整重现这个问题的场景。
首先在Gitee 删新建一个远程仓库:
拉取远程仓库
接下来我们在目录下添加一个大文件视频,并提交本地仓库, 然后删除大文件。
此时推送代码时, 推送失败。原因是当前文件为284.988MB超过最大100M。
BFG 删除历史文件
在操作之前, 使用--mirror对仓库进行备份,拷贝一份新仓库
目前我们代码还没有提交所以我们使用本地路径克隆本地仓库
下载BFG Repo-Cleaner,BFG是一个jar文件, 要求Java8 或更高版本的 Java 运行环境
https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar
将下载的jar 文件放在项目目录下, 使用--delete-filtes删除文件
删除大文件后即可提交成功
总结
本文介绍了如何彻底清理Git历史中的大文件,解决因超大文件导致推送失败的问题。通过BFG Repo-Cleaner高效移除隐藏的大文件,确保仓库瘦身、迁移顺利,并符合远程仓库的文件大小限制!
希望这篇文章能帮助你!如果你有任何问题或想法,欢迎在评论区分享!
猜你喜欢
- 2025-04-08 用友NC系统“登陆后页面显示不完全”,怎么办?
- 2025-04-08 WINDOWS 中的 APPDATA 文件夹是什么以及如何清理它
- 2025-04-08 Linux基础知识 | 文件与目录大全讲解
- 2025-04-08 I/O流之File类的用法和实例详解——Java进阶知识讲义系列(八)
- 2025-04-08 Java文件的读写操作方法(java对文件的读写)
- 2025-04-08 Java Valhalla Project(巅峰极速阿斯顿马丁valhalla)
- 2025-04-08 Java 中文件目录监听实现(java监听ftp目录)
- 2025-04-08 怎么还有人不知道?微信的WeChat Files文件夹能不能删除?
- 2025-04-08 linux chmod命令设置目录/文件权限详解
- 2025-04-08 Java中将数组对象中的某个字段的值清空
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)