$ git filter-branch --env-filter '
   oldname="(old name)"
   oldemail="(old email)"
   newname="(new name)"
   newemail="(new email)"
   [ "$GIT_AUTHOR_EMAIL" = "$oldemail" ] && GIT_AUTHOR_EMAIL="$newemail"
   [ "$GIT_COMMITTER_EMAIL" = "$oldemail" ] && GIT_COMMITTER_EMAIL="$newemail"
   [ "$GIT_AUTHOR_NAME" = "$oldname" ] && GIT_AUTHOR_NAME="$newname"
   [ "$GIT_COMMITTER_NAME" = "$oldname" ] && GIT_COMMITTER_NAME="$newname"
   ' HEAD

Méthode un peu plus radicale :

$ git filter-branch -f --msg-filter "sed 's/(old email)/(new email)/'" 61c854b660f86fd25d5c86e29d733861858af2cf..HEAD