参考资料:https://www.cnblogs.com/fangsmile/p/17477340.html

git filter-branch --env-filter '
 OLD_EMAIL="old-email@example.com"
 CORRECT_NAME="New Author Name"
 CORRECT_EMAIL="new-email@example.com"
 if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
 then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
 if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
 then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
 fi
 ' --tag-name-filter cat -- --branches --tags

如果提示已经存在:

Proceeding with filter-branch...
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

按要求添加强制’-f’改为

git filter-branch -f --env-filter

最后使用以下命令强制推送修改后的提交记录到远程仓库(这个命令会将修改后的提交记录推送到所有分支和标签)

git push --force --tags origin 'refs/heads/*'