BFG - 移除Git Repository 中的敏感信息

整理了下自己最近的项目,全推到Gitee上了。顺便把上次Gitee整改导致“伪开源”的项目处理了下,加上了README.md(不加readme公开不了)。

然后忽然意识到自己之前上传的项目中,都是毫无保留的上传。比如:写的大部分都是SpringBoot框架的代码,数据库连接池配置都是写在application.properties/ application.yml中,由于涉及配置,所以这些文件一般不会加入到git.ignore中,也就导致了配置的数据库密码也是被上传到gitee上了。

还好这些代码大部分都没公开,公开了的也是很早之前的,密码也已经换了。但留着也不是办法啊。

所以上网搜了搜,发现了在GitHub Docs中就有提及移除隐私信息的一项,提供了好几种方法。最简单的就是采用BFG Repo-Cleaner

BFG

刚开始好奇这名字,原来是 git-filter-branch首字母反一下?

移除文本

  1. 下载 BFG (bfg-1.14.0.jar)

  2. 创建一个password.txt

    filter content of files, replacing matched text. Match expressions should be listed in the file, one expression per line - by default, each expression is treated as a literal, but ‘regex:’ & ‘glob:’ prefixes are supported, with ‘==>’ to specify a replacement string other than the default of ***REMOVED***.

    也就是说直接将要替换的文本作为一行写入,或者regex: & glob:作为前缀表示去匹配文本,然后使用==>将需要替换掉的文本放在后面,不配置就是默认替换为***REMOVED***

  3. 进入需要修改的项目中运行

    java -jar  bfg-1.14.0.jar --replace-text password.txt
    
  4. 此时原项目中是看不出修改变化的,改动的是.git中的各个repo,需要替换的文本均被换为***REMOVED***,每个commit的名字也会被替换。

  5. 操作结果可以在项目的上级目录中生成的project_name.bfg-report文件夹中查看更改情况,包括Ref的id变更、Object内容的修改位置等等

  6. 强制推送(后面的参数不确定是不是这么写)

    git push --force
    
记第一次尝试

以本人的一次错误操作演示,可能看的还更透彻

项目名:bootdemo

配置文件名:application.yml

刚开始不太理解password.txt的配置,所以就加了个个password试一试,反正这是个老年项目了。

passwod

运行java -jar bfg-1.14.0.jar --replace-text password.txt (这里没有配置需要改的文件)完成后,直接看项目的当前版本是没有变化的,需要看git的Repo。

(左侧为当前版本,相当于未提交的)

移除 'password'

可以看出来,密码没被改,改的是password文本。

所以,我项目中全部的password文本也都被替换了。

比如:我的User类中属性就被改了

移除 'password'

将password中改为"000000"后再运行一次

移除 '000000'

但也有个问题,你不会知道在你引入的其他第三方库中是不是会有相同的文本。。

比如

移除 '000000'

对于如何指定要替换的文件名,需要配置--filter-content-including , -fi--filter-content-excluding, -fe

执行命令

java -jar /Users/angzhijin/Downloads/bfg-1.14.0.jar --replace-text password.txt --filter-content-including '*.yaml' 

注意ymlyaml啊,wwww

移除 'fiter'

小记

关于BFG,还有不少其他功能,比如说删除文件、删除文件夹、删除Blob等等,使用方法基本差不多,看看官网再拿些项目试试就基本会了。

参考

posted @   Zang998  阅读(18)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示