git-filter-repo
安装
# macOS
brew install git-filter-repo
# 通用
pip3 install git-filter-repo
替换某个邮箱
git-filter-repo --email-callback 'return email.replace(b"alibaba-inc.com", b"example.com")' --force  --refs master
替换某个邮箱及其用户名
git filter-branch --env-filter '
  OLD_EMAIL="[email protected]"
  NEW_EMAIL="[email protected]"
  NEW_NAME="John Doe"
  if test "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL"
  then
    GIT_AUTHOR_EMAIL=$NEW_EMAIL
    GIT_AUTHOR_NAME=$NEW_NAME
  fi
  if test "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL"
  then
    GIT_COMMITTER_EMAIL=$NEW_EMAIL
    GIT_COMMITTER_NAME=$NEW_NAME
  fi
' -- --all
https://www.codeconcisely.com/posts/change-author-data-for-all-existing-commits/
替换全部
适合不重要的仓库,比如自己的仓库
git filter-branch -f --env-filter "
    GIT_AUTHOR_NAME='Newname'
    GIT_AUTHOR_EMAIL='new@email'
    GIT_COMMITTER_NAME='Newname'
    GIT_COMMITTER_EMAIL='new@email'
  " HEAD