git で管理しているプロジェクトで「あっ、しまったパスワードが紛れ込んでしまった…!」みたいなことがあって「どうしたらいいんやー><」と思っていたんですが、git filter-branch という最強のコマンドを使えばなんとかなるんですね。

今回は PASSWORD という文字列を含む行を git の歴史上から完全に削除するというのをやってみました。sed -e '/xxx/d' が xxx という文字列を含む行を削除 (delete) するコマンドです。
そうすると PASSWORD という文字列を含む行の痕跡が奇麗さっぱり消え去りました。なんて恐ろしいコマンドなんだ。。ちなみに何度か失敗して、git reflog から git reset --hard HEAD@{1} とかしてたので気を付けてください :)
今回は PASSWORD という文字列を含む行を git の歴史上から完全に削除するというのをやってみました。sed -e '/xxx/d' が xxx という文字列を含む行を削除 (delete) するコマンドです。
git filter-branch --tree-filter "find . -type f -exec sed -i '' -e '/PASSWORD/d' {} \;"
そうすると PASSWORD という文字列を含む行の痕跡が奇麗さっぱり消え去りました。なんて恐ろしいコマンドなんだ。。ちなみに何度か失敗して、git reflog から git reset --hard HEAD@{1} とかしてたので気を付けてください :)