删除 Git/GitHub 中的敏感数据
- 2020 年 3 月 7 日
- 笔记
今天整理之前的 GitHub 项目,发现自己的一个项目不小心把服务器密钥暴露出来了。幸好是个 private 的库。就着手准备把这个文件删除。
但是在 Git 里删文件似乎不是个容易的事情——由于 Git 会保留历史与版本回溯,所以需要将需要删除的文件在之前的版本中也一并删除掉w
据说正常来讲需要使用 git filter-branch 命令,但咱也不是 git 大佬,接触新命令也挺陌生的,而且据说这个命令一来繁琐,二来当需要修改的文件较大/较多时,执行时间堪忧。
好在有一个叫做 BFG 的工具,提供了一种更快、更简单的 git filter-branch 替代方法,用于删除不需要的数据。简单踩了一下坑,做了一下步骤记录。
1. 安装 BFG
2. 删除文件
需要先将需要删除的文件进行删除并在本地进行一次 commit,才能在 BFG 中对文件进行删除。否则会提示 These are your protected commits, and so their contents will NOT be altered
而无法彻底清除。
3. 运行 BFG
万事俱备,准备删除w
删除文件的命令:
java -jar bfg的路径/bfg-1.13.0.jar --delete-files 需要删除的文件
删除文件夹的命令:
java -jar bfg的路径/bfg-1.13.0.jar --delete-folders 需要删除的文件夹
4. commit 并 push 到远端
这里由于删除文件更改了之前的提交历史,所以必须 force push
git push --force
之后就可以去 GitHub 上检查一下文件是否删完了w
5. 添加 .gitignore
最后不要好了忘了伤疤忘了疼呦~ 记得把相关文件添加到 .gitignore 里w
用 Git 还是要谨慎一点哦