Macでのコマンド例です
パスワードを直書きしたファイルをgitで管理してしまっていて、そのパスワードをgitの歴史から抹消したいときに使用できます。
歴史上のすべてのpasswordが空文字に置き換わります。
下記コマンド例の *.h
とか password
とかは適宜書き換えてください。
git filter-branch --tree-filter "find . -name '*.h' -exec sed -i '' -e 's/password//g' {} \;" -- --all
- 上記例は
password
文字列を置き換えるというものです。置き換えようとしているパスワードの文字列がパスワード以外の部分で使用されていればそれも置き換わることになるので注意してください - sed の -i オプションの挙動がLinuxとMacで異なる みたいなのでMac以外で上記コマンドは使用しないでください (cf. http://qiita.com/catfist/items/1156ae0c7875f61417ee)
- 歴史上から該当パスワードを抹消するためには、上記コマンド実行後にリモートリポジトリに force push する必要があります
-
リポジトリに force push するときは細心の注意を払ってください
- コマンド実行後に変な部分が書き換わってないか確認
- force push するときに他のチームメンバーが作業中ではないか確認
- できれば以前のリポジトリをバックアップ用に保存しておく