秘密鍵など誤ってコミットしてしまった場合に履歴を完全に削除する手順
参考:6.4 Git のさまざまなツール - 歴史の書き換え
$ git checkout -b clean-key-file
$ git filter-branch --tree-filter 'rm -f common/key/id_rsa' HEAD
Rewrite 856f0bf61e41a27326cdae8f09fe708d679f596f (12/12)
Ref 'refs/heads/clean-key-file' was rewritten
clean-key-fileブランチでid_rsaが履歴から完全に削除されていることを確認する。
$ git filter-branch --tree-filter 'rm -f common/key/id_rsa' HEAD --all
$ git reflog expire --expire=now --all
$ git gc --aggressive --prune=now
$ git push --force origin master
※ remote:error: denying non-fast-forward refs/heads/master ... とエラーが出た場合は
下記のようにreceive.denynonfastforwardsをfalseにする。
$ git config receive.denynonfastforwards false