Git 批量修改历史 commit 中 user.email
注意:此操作会修改 Git 历史记录,正式工作环境不允许。 查询都有什么: git log --format='%aN %aE' | sort -u 注:一个特殊情况如果 email 没被设置过 OLD_EMAIL 可以填 user.name。 OLD_EMAIL 原来的邮箱 CORRECT_NAME 更正的名字 CORRECT_EMAIL 更正的邮箱 git filter-branch -f --env-filter ' OLD_EMAIL="old@qq.com" CORRECT_NAME="new_name" CORRECT_EMAIL="new@gmail.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 if [ "$GIT_AUTHOR_NAME" != "$CORRECT_NAME" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags 因为修改了 Git 历史所有要使用强制推送: ...