IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git bfg 的使用(删除提交记录中的敏感信息,删除文件等) -> 正文阅读

[开发工具]git bfg 的使用(删除提交记录中的敏感信息,删除文件等)

前言

使用 Git 的过程中,我们有可能会误提交一些敏感信息(密钥,个人隐私)或无用文件等到远程仓库。这时我们需要清理相关的数据,直接在文件中删除敏感信息再提交,虽然仓库中没有了敏感信息,但是在提交历史中还是能看到相应的敏感信息

当我们需要从提交记录中删除这些敏感信息,又不希望整个仓库的提交记录丢失时,可以使用官方 git-filter-branch 工具,但是使用起来麻烦而且速度也不快。

这里推荐使用 BFG Repo-Cleaner 工具,它是 Scala 编写的,专门针对移除 git 提交记录而制作的,是 git-filter-branch 的替代品,官方介绍说要比 git-filter-branch 快上 10~720 倍。

BFG Repo-Cleaner 的使用

官网流程介绍:

git clone --mirror git://example.com/some-big-repo.git
java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
cd some-big-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push

下面详细说明。

一、 安装

  1. 需要本地有 java 环境,本篇不做安装介绍。
  2. 下载 bfg.jar,这里提供的下载连接是 1.14.0,可以自己去官网下载。

二、 基本用法

my-repo.git 是使用 --mirror 克隆到自己本地的代码仓库,执行命令的文件结构如下:

在这里插入图片描述
my-repo.git.bfg-report 记录的是修改的数据。

  1. 下面的命令会将提交历史中大于 500M 的文件都清理掉。
java -jar bfg.jar --strip-blobs-bigger-than 100M my-repo.git
  1. 删除指定文件
java -jar bfg.jar --delete-files id_dsa my-repo.git // 删除 id_dsa 文件

java -jar bfg.jar --delete-files id_{dsa,rsa} my-repo.git // 文件名为 `id_dsa` 和 `id_rsa` 的文件都会删除
  1. 删除目录
java -jar bfg.jar --delete-folders pwd my-repo.git // 删除 pwd 目录
  1. 删除敏感信息
java -jar bfg.jar --replace-text replace_pwd.txt my-repo.git

这里的 replace_pwd.txt 是我们自己定义需要移除数据的文本,具体的语法规则自行学习使用,示例如下:

PASSWORD1                       # 默认删除 PASSWORD1 的相关记录
PASSWORD2==>examplePass         # PASSWORD2 改为 examplePass
PASSWORD3==>                    # PASSWORD3 转为 空字符串
regex:password=\w+==>password=  # 正则匹配替换,将password具体的数据删除 password=xxx 替换为 password=
regex:\r(\n)==>$1               # 替换 Windows 换行符 为 Unix 换行符

三、 示例

bfg 脚本

# 先使用 `--mirror` 将数据库克隆下来, `git --mirror` 的作用,感兴趣的可以自己去搜索。
git clone --mirror xxx/my-repo.git

# 替换 Password1:xxx 为空
java -jar bfg.jar --replace-text "replace_pwd.txt" --no-blob-protection my-repo.git

# 删除 pwd.txt 文件
java -jar bfg.jar --delete-files "pwd.txt" --no-blob-protection my-repo.git

cd my-repo.git

# 清理脏数据
git reflog expire --expire=now --all && git gc --prune=now --aggressive

# 推送至远端
git push

replace_pwd.txt 文件内容

regex:Password1:[\s\S]+==>

模拟了一个误将敏感信息上传至远端仓库的操作。

在这里插入图片描述

  1. add 提交 test.txtpwd.txt 文件
    在这里插入图片描述
  2. delete 提交将 pwd.txt 文件删除,并删除 test.txt 文件中的 Password1 的值。
    在这里插入图片描述
  3. 执行 bfg 脚本后,再次查看两次提交内容,可发现敏感信息已全部移除。

add 提交中的 Password1 的赋值已经没有了,并且也看不到 pwd.txt 文件的修改了。
add_after
delete 提交已没有修改内容了。
delete_after

四、使用过程中遇到的问题

  1. 需要先用 --mirror 将代码仓库克隆下来,所有的操作都是基于克隆后的代码仓库的。
  2. bfg 不会删除 git 仓库的文件,即使使用 --delete-files 进行删除。正确的做法应该是手动删除文件后,提交到远端仓库,bfg 仅删除提交历史中相关的数据。
  3. 最后 git push 的时候总是报权限不足(我自己创建的代码仓库),那么需要添加 --no-blob-protection 参数。这里有些权限控制还没太清楚了,实在不行,可以先将分支/tag 的保护放开,更新完成之后再设回原来的。在这里插入图片描述
    这里给个分支不允许强制推动的例子,将图中的按钮开关关闭,再推送会报错。
  4. --replace-text 参数需提供一个替换样本,一行就是一个替换样本。替换的是全仓库数据,会去扫描仓库。
  5. devmain 分支,同时都包含了一些需要去除敏感信息的提交历史,会怎么做?因为 clone 命令使用了 --mirror 标志,所以此推送将更新远程服务器上的所有引用,即:devmain 分支,包扩所有的 tag 的提交记录都会删除。
  6. 不会删除提交记录,只是将记录中的数据修改移除。

总结

bfg 主要用途:希望保留提交历史,需删除提交历史记录中的不希望被其他人看到的信息(密钥,个人隐私等)或大文件的移除。
环境配置完成后,使用还是比较方便的,软件运行速度也非常快,当遇到类似需求时推荐使用。

最后还是祝愿大家不要用到这个工具,尽量提前做好相应的知识储备(git 的使用,敏感信息过滤等),以防出现不必要的麻烦。

参考

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:35:05  更:2022-10-22 21:37:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:51:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码