bfg

bfgの使い方

タグ 事故対応


概要

  • gitレポジトリにセキュアな情報を追加してしまった時、過去にさかのぼってgitの記録から消すツール
  • 現在の操作しているheadのローカルにそのセキュアな情報が含まれていないことが前提(headはprotect扱いで消せない)
  • この例ではパスワードを消すことを記しているが、特定のファイル名を削除する、ファイルサイズが一定以上のものを消すなども可能である

インストール

$ wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

具体的な操作

mirrorオプションをつけて対象のgitレポジトリをcloneする

$ git clone --mirror <url>
  • --mirrorをつけると管理構造が得られる

bfgを実行する

$ java -jar bfg-1.14.0.jar --replace-text passwords.txt bfg-sandbox.git 
  • passwords.txtは削除したい文字列を記したもの

git reflog expire --expire=now --all && git gc --prune=now --aggressiveを実行する

$ cd <url>
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive

pushする

$ git push

参考