Git 如何清理敏感文本
有时候我们会在属性文件中添加数据库的连接参数等。
但是在提交的时候不小心将这些敏感连接参数和密码也提交到服务器上了。
虽然很多公司都有防火墙只能内部访问,但是还是非常不安全的。
这时候你需要一个 BFG Repo-Cleaner 这个工具了。
这个工具主要用于清理仓库中的敏感文本包括提交历史记录中的,同时也一并将历史记录清理。
下载
下载地址为:BFG Repo-Cleaner by rtyley ,你会下载一个 jar 的包。
假设我们需要清理仓库名称为:rets-io-client,你首先需要将这个仓库克隆到本地。
然后把下载的包放在和这个仓库同级的目录中。
假设我们的仓库地址为:D:\WorkDir\USRealEstate\Source-Code\rets-io-client
那么你可以将这个包放在:D:\WorkDir\USRealEstate\Source-Code 目录下面。
同时在 D:\WorkDir\USRealEstate\Source-Code 目录下面创建一个 passwords.txt 文件
运行命令
在控制台中运行下面的命令:
java -jar bfg-1.14.0.jar --replace-text passwords.txt rets-io-client
将你需要替换的字符串放到 passwords.txt 文件中。
例如我们需要替换的密码为 jfnsV4yHsDYaX4x9 那么你需要将这个字符串添加到 passwords.txt 后再执行上面的命令。
运行后的结果如上图的内容。
如果你有多个字符串需要替换的话,可以重复上面的操作。
在完成上面的所有替换后,进入仓库分别执行下面的 2 条 git 命令。
git reflog expire --expire=now --all
和
git gc --prune=now --aggressive
如果一切都没有问题的话,再运行 git push 将修改推送到远程仓库中。
此时再查看你的提交记录,所有敏感字符串应该都被替换掉了。
在提交历史中的字符串也会被替换成不可见的字符了。