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历史。

目录
相关文章
|
存储 Java 开发工具
解决码云Gitee上传文件大小受限的问题
解决码云Gitee上传文件大小受限的问题
1431 0
|
Web App开发 监控 Kubernetes
容器技术入门3:chaos混沌工程
参加冬季实战营第四期:零基础容器技术实战。参加学习一下,教程很好,做笔记记录一下。本文记录冬季实战营第四期:零基础容器技术实战动手实战-Chaos带你快速上手混沌工程。
1773 0
容器技术入门3:chaos混沌工程
|
Shell 开发工具 git
Git推送大文件失败?你晓得如何解决嘛?
Git推送大文件失败?你晓得如何解决嘛?
|
8月前
|
存储 安全 Java
Git历史数据清理:运用BFG删除敏感信息。
通过使用BFG Repo-Cleaner,你可以确保你的Git历史记录自由于敏感数据,而不需要为手动清理每一个提交而烦恼。不仅如此,BFG的效率极高,对于大型的存储库和长期的提交历史,其表现出色,即使在处理数万个提交和GB级别的数据时,也能快速和有效的清理Git历史。
221 34
|
前端开发
|
7月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
470 14
|
3月前
|
SQL XML Java
MyBatis框架如何处理字符串相等的判断条件。
总的来说,MyBatis框架提供了灵活而强大的机制来处理SQL语句中的字符串相等判断条件。无论是简单的等值判断,还是复杂的条件逻辑,MyBatis都能通过其标签和属性来实现,使得动态SQL的编写既安全又高效。
277 0
|
存储 机器学习/深度学习 自然语言处理
LangChain与向量数据库:高效的信息检索方案
【8月更文第4天】随着自然语言处理技术的发展,特别是深度学习的进步,我们能够更加高效地处理大量的文本数据。LangChain 作为一种强大的工具链,旨在简化和加速构建复杂的自然语言处理应用程序。结合向量数据库,LangChain 可以实现高效且精准的信息检索功能。本文将探讨这一组合的工作原理,并通过一个具体的实现案例来展示其在实际应用中的效果。
1206 2
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
427 2
JS算法必备之Array常用操作方法
|
前端开发 PHP 数据格式
【附带效果视频】php接口给前端返回流式数据,php使用event-stream进行数据推送,循环一次输出一次
【附带效果视频】php接口给前端返回流式数据,php使用event-stream进行数据推送,循环一次输出一次
556 0