修改git历史用户名和邮箱

1、批量修改历史记录中的信息

打开一个文本编辑器,粘贴下面代码。
然后把 OLD_EMAIL,CORRECT_NAME,CORRECT_EMAIL 改成自己的新旧邮箱用户名。

git filter-branch -f --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

回到 git bash 界面,复制粘贴上面的代码并按回车执行。
如果 commit 记录比较多的话执行的时间会比较长。

等待执行完成后,再查看 git log 可以看到已经修改成功。

特殊情况:
如果上面的批量修改命令执行失败的话,执行一下这段命令:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

再次复制粘贴批量修改的代码并按回车执行。

2、将修改结果推送到远程

这时候虽然本地修改成功了,但是你还没有推送到远程。
所以再执行一下命令:

git push origin --force --all

去看一下 Github 你就会发现之前的提交记录中,name 和 email 信息都更新了。

posted @ 2023-08-28 20:11  徐小禹_web  阅读(97)  评论(0编辑  收藏  举报