清除git历史敏感数据--bfg的应用

项目场景:

开源项目中的git历史中存在敏感 信息,如数据库地址,端口,密码,用户等

我们我们在主分支擦除密码,用户名等,git的历史记录里还是会有相关信息,并不能真正做到清除敏感信息


解决方案:

使用bfg工具包,下载地址:

https://search.maven.org/classic/remote_content?g=com.madgag\&a=bfg\&v=LATEST

下载完成后,将相应的jar包放到我们的项目目录下

编写替换文档 replacements.txt

注意bfg和txt文件要在同一目录下

接着输入指令

java -jar bfg.jar --replace-text password.txt --no-blob-protection

然后输入相关指令清除git仓库

git reflog expire --expire=now --all ; git gc --prune=now --aggressive

命令介绍:

git reflog expire --expire=now --all

这个命令的目的是将引用日志标记为过期,使得在后续的 git gc 操作中,不再考虑这些过期的引用日志。

  • git reflog expire 命令用于过期(清理)引用日志(reflog)。
  • --expire=now 参数表示将所有引用日志都标记为过期,即所有历史引用日志都被认为是不再需要的。
  • --all 参数表示应用于所有分支和 HEAD。

git gc --prune=now --aggressive

这个命令的目的是执行垃圾收集,并在清理不再需要的对象的同时,应用更激进的策略以优化存储库。

  • git gc 命令用于垃圾收集,即清理不再需要的对象。
  • --prune=now 参数表示立即清理过期的引用日志和不再需要的对象。
  • --aggressive 参数表示在垃圾收集时使用更激进的策略,以尽量减小存储库的大小。
相关推荐
但老师5 小时前
Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
git
秃头女孩y5 小时前
git创建分支
git
研究是为了理解10 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT11 小时前
Git 的基本概念和使用方式
git
Winston Wood14 小时前
一文了解git TAG
git·版本控制
喵喵先森15 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu54316 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio18 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。19 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie620 小时前
在IDEA中使用Git
java·git