初めに
過去のコミット履歴にAPIキーが含まれてしまっていて、セキュリティ的に問題があった。
削除しないといけなかったが、gitコマンドを使ったことがなく悩んだので備忘録を記述する。
git filter-branchコマンド
git filter-branchコマンドを使用すると、全てのコミット履歴から対象のファイルを検索できる。
例えばAPIキーが記述された、enb.localファイルを誤ってコミットしてしまったとする。
その際に必要なコマンドは、以下です。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch src/env.local' HEAD
env.localにはパスを指定することが大切です。
ファイル名だけだと実行できず、自分は詰まりました。。
git filter-branchの --index-filterオプションで前コミット履歴を対象にすることができる。
削除コマンドの
git rmに--cached --ignore-unmatch と続いていますが、
これは仮に各コミットにenv.localがない場合にエラーを回避するための記述です。
このコマンドを押下すると、各コミット分処理が走り、対象のファイルを削除してくれます。
最悪のケースに使うらしい
ただこの filter-branchコマンドは前コミットに対して行うため使わない方が良いらしい(当たり前だが)
ただ過去のコミットに誤って、機密情報が紛れ込んでいたということは起こると思う。
そんな時の最終手段としてこのコマンドを使うのが良いと思います。
その際はしっかりと動作確認を忘れずに。
まとめ
今回は過去のコミット履歴を削除する方法について紹介しました。
初めての経験だったので勉強になりました。
参考文献
https://ez-net.jp/article/52/rU6oV5VK/QrNM3eiH4CF_/
https://b3s.be-s.co.jp/nocategory/5174/