BFG 删除Git提交历史记录中的敏感信息

日常提交代码的时候可能遇到的一个问题就是,不小心将一些数据库配置或者密钥文件提交到了线上,后面就算删除掉提交的文件,但是相关信息还是可以在历史版本中看到,下面介绍一下使用BFG Repo-Cleaner 来处理这种情况

BFG Repo-Cleaner

Removes large or troublesome blobs like git-filter-branch does, but faster. And written in Scala
BFG可以用来移除大文件或者处理我们想从 git history中的内容,就像GIt提供的git-filter-branch命令那样,不过比他更快。

步骤

1. 安装BFG

wget http://repo1.maven.org/maven2/com/madgag/bfg/1.12.16/bfg-1.12.16.jar

BFG需要在java环境执行
The Java Runtime Environment (Java 8 or above - BFG v1.12.16 was the last version to support Java 7)

2. clone一份镜像数据

bfg提供的破坏性操作一旦执行,后面就没办法找回之前的状态,所以为了以防万一,先备份

$ git clone --mirror git://example.com/some-big-repo.git

3. 替换敏感数据

$ java -jar bfg.jar --replace-text replacements.txt my-repo.git
  • bfg.jar:下的什么版本这里就改成对应版本的bfg.jar,前文中使用wget下载了bfg-1.12.16.jar
  • replacements.txt: 中填写需要替换的字段,可以使用正则匹配,默认使***REMOVED***代替原内容
  • my-repo.git:本地git项目路径

Replace with ‘REMOVED’ (default)

PASSWORD1 
# replace with 'examplePass' instead
PASSWORD2==>examplePass
#replace with the empty string
PASSWORD3==> 

4. 删除缓存数据

$ git reflog expire --expire=now --all
$ git gc --prune=now

5. 提交本地修改到仓库

$ git push origin --force --all
$ git push origin --force --tags
  • –all参数是作用于所有分支上

6. 更新其他的clone

如果其他服务器或者电脑上clone了该仓库的代码,简单使用git pull是无法更新前文中的修改的
这里用到的命令是:

$ git fetch origin 
$ git reset --hard origin/master

然后同样用一下命令删除一下缓存信息

$ git reflog expire --expire=now --all
$ git gc --prune=now
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git,当我们使用git push命令将代码推送到远程仓库时,如果其包含的某个文件大小超过了100MB,就会报错。 这是因为GitHub对单个文件的大小有限制,最大为100MB。引用为解决这个问题提供了一种方法,可以使用BFG Repo-Cleaner工具来清除Git仓库的大文件或隐私文件。这个工具可以帮助我们重新写入Git历史记录,从而将大文件从仓库删除。你可以参考提供的参考文章的链接来了解更多关于BFG Repo-Cleaner信息和如何使用它来处理这个问题。引用的错误信息也提到了GitHub的建议最大文件大小为50MB,如果超过了这个限制,可以考虑使用Git Large File Storage(LFS)来管理大文件。 Git LFS是一个用于存储和管理大文件的扩展插件,可以帮助我们更有效地处理大文件,避免超过GitHub的限制。如果你遇到了git push超过100MB的问题,可以根据这些方法进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [git push失败:存在超过100MB的文件](https://blog.csdn.net/Old_D7/article/details/127479737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [解决git提交文件超过100M问题](https://blog.csdn.net/wuyutaoktm/article/details/121949808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值