BFG Repo-Cleaner,一行命令替换、删除、修改git提交记录?

1. 工具介绍

BFG Repo-Cleaner是一个使用scal语言编写的开源工具,它提供更快更简单的方式操作git提交记录,它是git filter-repo一个有效替代工具,能够更轻松的完成任务。

2. 你可以用它来做什么?

  1. 可以删除提交记录中的不再使用的一些大文件,帮助减少提交记录占用体积。
  2. 轻松移除密码、凭证和其他一些敏感的数据。

3. 什么时候用到它?

  1. 当项目需要开源,但是开发过程中提交的代码含有一些敏感信息需要删除,如密码、ip、授权码等敏感信息。
  2. git提交历史记录很多,占用空间大,需要删除过往记录中一些不在使用的文件,或者需要删除一些大文件,减少历史记录体积。

4. 如何使用?

PS:BFG Repo-Cleaner是一个可运行的jar包,所以要确保您的开发环境已经配置好了Java,否则无法使用该工具。如果您没有配置Java,请您先配置Java环境后使用。

下面说明在Windows操作系统下使用,Linux其他同理,只是进入文件夹的命令不同,执行的BFG命令是相同的。

4.1 删除提交记录中的某些敏感文件

假设您的提交记录中含有test.com.pfx,pwd.properties等敏感文件,现在需要从历史记录中删除它们。

1.去BFG官网下载最先的工具Jar包。

BFG Repo-Cleaner

2.下载完成后将这个jar包复制到您到项目根目录下与.git目录同级

3.以管理员的身份打开cmd,进入项目目录。(我这里拷贝了一个项目副本做演示)

4.执行命令

项目中的敏感文件是WxUtils,里面含有appid和secret。

java -jar bfg-1.14.0.jar --delete-files WxUtils.java

5.提交修改后的历史记录

这里需要注意,如果不止一个人修改过删除的文件,那么其他人的修改记录也会被覆盖。

git push --force

最后你会发现该分支上该文件的提交记录都已经被删掉。

4.2 替换提交记录中的文本

执行命令:java -jar bfg-1.14.0.jar --replace-text replace.txt

在replace.txt文件中指定要替换的规则。

--replace-text后面的参数是规则文件的位置,我这里是直接放置于jar包同级目录下。

举一个例子说明替换的规则:

可以直接替换或者使用正则替换。

txt 复制代码
www.muhsanyu.top==>ip
regex:password: .*==>password: your password
regex:username: .*==>username: your username

第一行将所有记录中的www.muhsanyu.top字符替换为ip

第三和第四行表示使用正则,password: .*正则表示开头为password: 的所有字符串,将该字符串替换为password: your password

4.3 删除掉指定大小的文件

执行命令:java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 50M

该条命令表示删除文件大小大于50m的文件,当然删除的文件是指删除提交记录中的历史文件记录。

注意4.2和4.3均需要git push --force将记录提交到远程仓库中,否则只是在本地仓库中生效。

5. 总结

如果你想要修改项目中的一些含有敏感信息的提交记录,抑或是要删除某些文件,修改某些内容,BFG Repo-Cleaner都是一个不错的选择。

我的一个个人项目也是成功使用这个工具删除了提交记录中的一些敏感信息,下面贴出项目地址。

相关推荐
恒拓高科WorkPlus18 分钟前
企业怎样选择IM即时通讯平台?私有化部署还是SaaS更适合?
网络·github
Maynor在掘金2 小时前
只用 1 张随手拍,在 Claude Code 里做出 15 秒抖音带货视频(配音 + 字幕花字 + BGM,本地出片)
github
littlex4 小时前
复盘分享:「高性价比人生指南」衍生网站,一周 8k+ 用户
github
u1301304 小时前
GitHub 热榜项目:周榜(2026-10-04)
人工智能·github
挖掘狂人5 小时前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github
miofly5 小时前
macOS 本地 AI 搜索工具 SCM 发布 0.2.4 版本,支持多模型照片视频检索
开源·github
codigger6 小时前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
高频因子挖掘机6 小时前
行情监控脚本重启后,怎样快速恢复而不重复拉取数据?
后端·github·api
水饺编程6 小时前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
idanzk6 小时前
Git 推送 GitHub 报 SSL_READ /src refspec main 不匹配 完整踩坑记录
git·github·ssl