有时候历史提交记录的用户名和邮箱需要修改,下面的方法可以在git命令行窗口执行以下命令来完成。
step1、查看当前仓库的用户名和密码是不是符合需求的。
查看用户名: git config user.name
查看对应的邮箱: git config user.email
如果不正确,需要设置好。
设置当前仓库的用户名: git config user.name 用户名
设置当前仓库的邮箱地址: git config user.email 邮箱地址
step2、将如下shell代码复制到git命令行执行
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
(切记修改好用户名和邮箱地址)执行过程比较慢,等待执行完毕。如下图:
![](https://img-blog.csdnimg.cn/img_convert/1872108157455b64c65d0be1dbfd92b0.png)
如果上面的代码执行失败,则继续执行如下命令:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
执行结束后,再将上述批量修改代码复制到命令行执行。等待执行完毕,进入最后一步:
step3、将修改强制push到远程
如果在 git bash 窗口,则可以用gitk查看修改后的状态
执行如下命令:
git push origin --force --all
至此,修改完成。