Skip to content

替换历史提交中的用户名和邮箱

不小心把工作邮箱提交到GitHub怎么办

在代码目录用下面这段脚本:

bash
# !/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="旧邮箱"
CORRECT_NAME="新用户名"
CORRECT_EMAIL="新邮箱"

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

然后清理本地原始备份引用:

bash
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

最后检查是否还有旧邮箱:

bash
# 检查是否还有旧用户名
git log --all --pretty=format:"%h %an %ae" | grep "$OLD_EMAIL"