v-crn Code Log

主に備忘録

機密データを history 含め git リポジトリから削除する

間違えて機密データをコミットに含めてプッシュしてしまった場合に、BFG というツールを使ってそれをなかったことにする方法について説明する。

Install BFG

Prerequests

BFG を動かすには Java が必要なので、なければインストールしておこう。

Linux:

sudo apt update && sudo apt install default-jdk

BFG のインストール

以下の公式サイトからダウンロードする。

BFG Repo-Cleaner by rtyley

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

Refs