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

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

背景

最近接到一个需求,要把一个 Git 仓库的代码完整迁移到另一个仓库。听起来很简单,对吧?理想情况应该是:

arduino 复制代码
git clone 原仓库地址  
git remote set-url origin 新仓库地址  
git push -u origin main

Done!🎉

但现实情况往往没那么顺利...... 😅

当我 push 到新仓库时,报错了。服务器拒绝了提交,原因是这个仓库存在大文件。

问题出在哪?

其实当我们手动删除大文件只是从最新代码里移除了它们,但实际上,它们仍然藏在 Git 的历史记录里。只要有人仔细翻看 commit 历史,还是能找到被删掉的大文件(甚至是敏感数据)。

这就像:

📂 工作目录(最新代码)→ 干干净净

📜 Git 历史(隐藏记录)→ 仍然藏着之前的文件

为了解决这个问题, 就需要彻底清理 Git 历史中的大文件,让仓库瘦身,成功 push 到新服务器!

准备示例

下面我们在Gitee上新建一个远程仓库来完整重现这个问题的场景。

首先在Gitee 删新建一个远程仓库:

拉取远程仓库

接下来我们在目录下添加一个大文件视频,并提交本地仓库, 然后删除大文件。

此时推送代码时, 推送失败。原因是当前文件为284.988MB超过最大100M。

BFG 删除历史文件

在操作之前, 使用--mirror对仓库进行备份,拷贝一份新仓库

目前我们代码还没有提交所以我们使用本地路径克隆本地仓库

下载BFG Repo-Cleaner,BFG是一个jar文件, 要求Java8 或更高版本的 Java 运行环境

repo1.maven.org/maven2/com/...

将下载的jar 文件放在项目目录下, 使用--delete-filtes删除文件

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

相关推荐
Highcharts.js3 小时前
Highcharts React v4 迁移指南(下):分步代码示例与常见问题解决
javascript·react.js·typescript·react·highcharts·代码示例·v4迁移
Laurence3 小时前
Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
前端·javascript·c++·后端·交互·qwebchannel·互操作
Pu_Nine_93 小时前
JavaScript 字符串与数组核心方法详解
前端·javascript·ecmascript
这是个栗子3 小时前
前端开发中的常用工具函数(六)
javascript·every
kyriewen3 小时前
异步编程:从“回调地狱”到“async/await”的救赎之路
前端·javascript·面试
前端Hardy4 小时前
别再手动写 loading 了!封装一个自动防重提交的 Hook
前端·javascript·vue.js
前端Hardy4 小时前
前端如何实现“无感刷新”Token?90% 的人都做错了
前端·javascript·vue.js
SuperEugene4 小时前
Vue Router 实战规范:path/name/meta 配置 + 动态 / 嵌套路由,统一团队标准|状态管理与路由规范篇
开发语言·前端·javascript·vue.js·前端框架
张一凡934 小时前
easy-model -- "小而美"的React状态管理方案
前端·javascript·react.js
前端Hardy4 小时前
纯 HTML/CSS/JS 实现的高颜值登录页,还会眨眼睛!少女心爆棚!
前端·javascript·vue.js