クリーンアップする必要があるものを確認することから始めます。
git shortlog -s
これらの名前のそれぞれについて、次のようなスクリプトでエントリを作成します (すべての作成者とコミッターを同じにする必要があると仮定します)。
#!/bin/sh
git filter-branch --env-filter '
n=$GIT_AUTHOR_NAME
m=$GIT_AUTHOR_EMAIL
case ${GIT_AUTHOR_NAME} in
user1) n="User One" ; m="user1@example.com" ;;
"User Two") n="User Two" ; m="user2@example.com" ;;
esac
export GIT_AUTHOR_NAME="$n"
export GIT_AUTHOR_EMAIL="$m"
export GIT_COMMITTER_NAME="$n"
export GIT_COMMITTER_EMAIL="$m"
'
これは基本的に、最近大規模な書き直しに使用したスクリプトであり、あなたが説明したとおりです(ただし、多数の作成者がいたことを除いて)。
edit π を使用すると、スクリプトの引用の問題が指摘されました。ありがとう!