Git历史数据清理:运用BFG删除敏感信息。

简介: 通过使用BFG Repo-Cleaner,你可以确保你的Git历史记录自由于敏感数据,而不需要为手动清理每一个提交而烦恼。不仅如此,BFG的效率极高,对于大型的存储库和长期的提交历史,其表现出色,即使在处理数万个提交和GB级别的数据时,也能快速和有效的清理Git历史。

Git是如今最受欢迎的分布式版本控制系统,可以帮助开发者有效地追踪和管理源代码历史。然而,有时,敏感信息,例如密码、API密钥或别的密文,可能误以为是普通的代码添加到版本库中,这在开源项目中是个常见问题,可能会导致严重的隐私和安全问题。

这种状况下,你可能想要从Git历史数据中彻底删除这些敏感信息。在这个过程中,BFG Repo-Cleaner就发挥了重要作用。BFG是一个工具,比git-filter-branch更快、更简单,专为清理你的Git Repositor而设计。

BFG拿来就可以使用,它更加效率,并且有一个合理的安全模式。它能快速录取历史提交,查找和修改指定文件或文件类型,然后再自动清理和最小化Git存储库。

下面就是一些简单的步骤,可以帮助你使用BFG清理敏感信息:

步骤一:安装BFG Repo-Cleaner

你可以在你的机器上使用以下命令安装BFG:

$ brew install bfg
​

或者,你也可以从BFG的GitHub页面下载.jar文件。

步骤二:克隆一个裸存储库

假设你的项目存储库地址为:https://github.com/username/myrepo.git ,使用以下命令生成裸存储库:

$ git clone --mirror https://github.com/username/myrepo.git
​

这将在你的当前目录下创建一个 myrepo.git目录。记住,这是一个裸存储库,你不会在其中看到通常的工作目录文件。

步骤三:运行BFG来清除数据

接下来,我们将具体操作BFG来清除已知的敏感文件。使用以下命令:

$ bfg --delete-files mysecrets.txt myrepo.git
​

其中,mysecrets.txt是你想要从所有Git历史记录中删除的文件。

步骤四:清洗你的存储库

现在,删除所有标签(引用)到你的旧提交:

$ cd myrepo.git
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive
​

这会清理你的存储库并从中删除所有的旧提交。

步骤五:推送清洗后的存储库

最后,你可以把清洗过的存储库推送回远端:

$ git push --all
​

请注意,这会覆盖你远端的Git历史,所以在推送之前,确保其他人都已经拉取了最新的更改,以防他们在你删除历史之后又重新推送它回去。

在上述所有步骤中,一个值得注意的细节是,尽管BFG可以删除文件或文本,但它不会修改你的最新提交,这意味着如果敏感数据存在于你最近的提交之中,你需要手动删除,在这之后再运行BFG。

通过使用BFG Repo-Cleaner,你可以确保你的Git历史记录自由于敏感数据,而不需要为手动清理每一个提交而烦恼。不仅如此,BFG的效率极高,对于大型的存储库和长期的提交历史,其表现出色,即使在处理数万个提交和GB级别的数据时,也能快速和有效的清理Git历史。

目录
相关文章
|
弹性计算 Linux 开发工具
幻兽帕鲁服务器如何设置/修改密码
介绍了如何设置幻兽帕鲁服务器的密码,以及需要密码才可以加入到服务器中教程
15412 6
幻兽帕鲁服务器如何设置/修改密码
|
前端开发
|
7月前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
10684 22
|
存储 前端开发 Java
Git 仓库越来越大?不要慌!试试这个简单方法,轻松秒瘦身
Git 仓库越来越大?不要慌!试试这个简单方法,轻松秒瘦身
|
8月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
56280 11
|
机器学习/深度学习 存储 人工智能
【科普向】我们所说的AI模型训练到底在训练什么?
人工智能(AI)模型训练类似于厨师通过反复实践来掌握烹饪技巧。它通过大量数据输入,自动优化内部参数(如神经网络中的权重和偏置),以最小化预测误差或损失函数,使模型在面对新数据时更加准确。训练过程包括前向传播、计算损失、反向传播和更新权重等步骤,最终生成权重文件保存模型参数,用于后续的应用和部署。理解生物神经网络的工作原理为人工神经网络的设计提供了灵感,后者广泛应用于图像识别、自然语言处理等领域。
|
供应链 监控
业务连续性计划(Business Continuity Plan, BCP)
业务连续性计划(Business Continuity Plan, BCP)
1660 1
|
缓存 Linux 程序员
老程序员分享:linux下netlink的使用简介
老程序员分享:linux下netlink的使用简介
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
1271 1
|
Kubernetes Go 持续交付
一个基于Go程序的持续集成/持续部署(CI/CD)
本教程通过一个简单的Go程序示例,展示了如何使用GitHub Actions实现从代码提交到Kubernetes部署的CI/CD流程。首先创建并版本控制Go项目,接着编写Dockerfile构建镜像,再配置CI/CD流程自动化构建、推送Docker镜像及部署应用。此流程基于GitHub仓库,适用于快速迭代开发。
421 3

热门文章

最新文章