機密データを history 含め git リポジトリから削除する
間違えて機密データをコミットに含めてプッシュしてしまった場合に、BFG というツールを使ってそれをなかったことにする方法について説明する。
Install BFG
Prerequests
BFG を動かすには Java が必要なので、なければインストールしておこう。
sudo apt update && sudo apt install default-jdk
BFG のインストール
以下の公式サイトからダウンロードする。
cd ~ curl -O https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar
.bash_profile や .zshrc などにエイリアスを追加する。
alias bfg='java -jar $HOME/bfg-1.14.0.jar'
これで bfg
コマンドとして使えるようになる。
手順
1.機密データを削除するか一旦リポジトリ内にない状態にしてコミット
2.プロジェクト直下で次の bfg
コマンドを実行
bfg --delete-files 機密データを含むファイル名
- ファイルパスではないことに注意
次のコマンドで対象の履歴が削除される。
git reflog expire --expire=now --all && git gc --prune=now --aggressive
機密データが削除されたら、変更を GitHub に強制的にプッシュする。
git push --force