项目场景:
开源项目中的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
参数表示在垃圾收集时使用更激进的策略,以尽量减小存储库的大小。