gitの最初のcommitにパスワードを書き込んでpushしたとします。さらに、しばらくcommit/pushを繰り返したとします。
下記の手順でパスワードを全てマスクした文字に書き換える事ができますが、cloneして作業している人すべてに影響がでるので作業前には関係者への連絡と準備が必須です。
事前確認
ブランチがクリーンなことを確認します。
$ git status ブランチ master nothing to commit, working tree clean $
下記のようにpasswordが含まれているファイルをを確認します。
$ git grep password file.txt:password $
書き換え
filter-branchの--tree-filterオプションで各コミットに実行するコマンドを指定します。
確認したfile.txtをsedで書き換えます。
$ git filter-branch -f --tree-filter "sed -i -e 's/password/mask/' file.txt" HEAD Rewrite c5974de297ec5360d0dfce499abccc3073ba0211 (2/2) (0 seconds passed, remaining 0 predicted) Ref 'refs/heads/master' was rewritten $
確認
下記の通りpasswordは、消えて…
$ git grep password $
maskになっています。
$ git grep mask file.txt:mask $
以上
コメント
git grep では意味なかったです。
git log -S ‘password’とすべきでした。