一括変換
一括変更は下記のコマンドでできます。
$ git filter-branch -f --env-filter \
"GIT_AUTHOR_NAME='<変更後の名前>'; \
GIT_AUTHOR_EMAIL='<変更後のメールアドレス>'; \
GIT_COMMITTER_NAME='<変更後の名前>'; \
GIT_COMMITTER_EMAIL='<変更後のメールアドレス>';" \
<対象コミット>
<対象コミット>は全部もしくは範囲指定できます。
・HEAD → 全部
・HEAD~3..HEAD → 過去直近3コミット分
Author名指定
また、特定のAuthor名だけを指定して変更もできます。
$ git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "<変更前の名前>" ]; then
GIT_AUTHOR_NAME="<変更後の名前>";
GIT_AUTHOR_EMAIL="<変更後のメールアドレス>";
GIT_COMMITTER_NAME="<変更後の名前>";
GIT_COMMITTER_EMAIL="<変更後のメールアドレス>";
git commit-tree "$@";
else
git commit-tree "$@";
fi' <対象コミット>
シングルクォートやダブルクォート、[ ]の前後に空白入れ忘れたりするとエラーになります。
リモートに反映
git log
で確認し、大丈夫そうならリモートに反映しましょう。
git push -f xxxxx yyyyy
をするとリモート先でも書き換わります。