0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[git] 過去のコミット履歴を削除する方法

Posted at

初めに

過去のコミット履歴に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/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?