当前位置: 首页 > news >正文

BFG Repo-Cleaner 教程:快速清理 Git 仓库中的敏感数据和大文件

遇到Git仓库迁移因历史大文件导致推送失败?虽然删除了文件,但它们仍藏在Git历史中。本文教你使用BFG工具彻底清理历史大文件,成功完成迁移并优化仓库!

背景

最近接到一个需求,要把一个 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删除文件

在这里插入图片描述

删除大文件后即可提交成功

在这里插入图片描述

相关文章:

  • Android InstalldNativeService::getAppSize源码分析
  • Ubuntu系统下的包管理器APT
  • Fay 数字人部署环境需求
  • Ubuntu下载火狐浏览器
  • Python学习笔记(9)关于元组
  • P1049 装箱问题
  • PPT处理控件Aspose.Slides教程:使用 Java 编程创建动画幻灯片
  • 解析Java包核心知识
  • 单链表——C语言实现
  • c++进阶--智能指针
  • 第十三天 - Ansible基础架构 - YAML语法与Playbook - 练习:批量配置部署
  • Kaggle-Digit Recognizer-(多分类+卷积神经网络CNN)
  • 集成学习+泰坦尼克号案例+红酒品质预测
  • pipe匿名管道实操(Linux)
  • SpringBoot集成Ollama本地模型
  • AllData数据中台升级发布 | 支持K8S数据平台2.0版本
  • 系统变量和用户变量的区别是什么
  • Android WiFi获取动态IP地址
  • python函数的定义与使用
  • Docker Harbor