Git で過去の commit の Author を書き換える

git-log を見ていたらメールアドレスを間違えていたのに気づいたので、何とか書き換えられないかと試行錯誤してみた。
その結果、git-format-patch でパッチ作って sed とかで書き換えた後、git-am で取り込み直せば Author を書き換えられることが分かった。なお、最初の commit については、git-show の出力をメール形式に書き換えて(FromSubject あたり)使えば何とかなる。
……というような記事を書こうとしたら、以下のような記事を見付けた。

Pro Git - Pro Git 6.4 Git Tools Rewriting Historyによると、git-filter-branchを使うと良いらしい。ということで、次のようなコマンドを実行してみた。*3また、名前だけでなくemailも古かったので、ついでに変更した。

$ git filter-branch --commit-filter '
    GIT_AUTHOR_NAME="idesaku"
    GIT_AUTHOR_EMAIL="(メールアドレス)"
    GIT_COMMITTER_NAME="idesaku"
    GIT_COMMITTER_EMAIL="(メールアドレス)"
    git commit-tree "$@"
' HEAD
GitのCommit中のAuthor名およびCommitter名を変える - idesaku blog

git-filter-branch なんてのがあったのか……。
http://progit.org は一度きちんと読まないといけないなあ。