# 前言
在将 github
私有仓库转为公开仓库时,常常需要对隐私数据(例如密码、密钥等等)进行脱敏操作,由于 git 的 appendonly
的特性仅删除最后一个节点的文件是不够的,我们需要遍历所有节点筛选出该文件的所有历史节点,对这些历史节点进行重写以完全去除敏感数据。
# 步骤
参考资料:从仓库中删除敏感数据 - GitHub Docs
总共有两种方法:
# BFG
bfg --delete-files ${yourfile_name} |
使用 bfg 命令行工具其优点在于命令简单,但是由于是 java 命令行工具,需要 jre
环境
# Git 命令行
删除本地分支中的该文件
h git filter-branch --force --index-filter "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" --prune-empty --tag-name-filter cat -- --all
强制推送到远程分支 (注意该操作不可逆)
h git push --force
git push --tags --force
P.S. 数据删除需谨慎,该操作不可逆