Git リポジトリに機密データをうっかりコミットしてしまったときの対応

Git リポジトリにうっかり鬼滅、じゃなかった機密データをコミットして、GitHub に push までしてしまった。幸いプライベートリポジトリだったので、直ちに影響はない。

ただ、完成したら public にする予定なので、このままではいけない。履歴が消えても影響無いくらいのコミット数なので、リポジトリを作り直すこともできるが、それだとせっかく GitHub に生やした草が無くなってしまう。それは避けたい。

Git のコミットから何とかして削除するしかないな。git filter-branch コマンドを使って歴史もとい履歴を改変。

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 機密データのファイルパス" --prune-empty --tag-name-filter cat -- --all

うっかりコミットしてしまいそうなら、.gitignore に追加したほうが無難。今回は環境変数を使うようにしたので、.gitignore に追加しなかった。

仕上げに、GitHub に強制 push して、GitHub 上の履歴も改変する。

git push origin --force --all

これで難を逃れた。違うリポジトリでまたやってしまう可能性はゼロではないので、やり方はブログにメモしておくけど、そう何度も実行したいことじゃないな。やらないで済むならそれが一番。.gitignore 大事。