如下图中,将已经提交的commit中,用户名jincheng-demo,jincheng-demo01,以及邮箱[email protected], 修改为正确的用户名:jincheng,正确的邮箱:[email protected] ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210714150220957.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ppbmNoZW5nXzkyMQ==,size_16,color_FFFFFF,t_70#pic_center)
步骤
打开git bash here 客户端复制需要修改的项目的git地址
git clone --bare https://gitee.com/xxxx/test01.git(这里替换成自己的git地址)
cd test01.git (clone完成后,进入项目目录)
建议执行以下命令,查看当前的git提交后的用户名和邮箱
git config user.name
git config user.email
复制脚本,并修改成自己的信息,粘贴到git bash here客户端中,按enter执行 OLD_EMAIL:原来的邮箱名称,这里我的是[email protected] CORRECT_NAME:新的用户名称,我自己的是jincheng CORRECT_EMAIL:新的邮箱,[email protected]
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="jincheng"
CORRECT_EMAIL="[email protected]"
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
执行后,如下图绿色框中的输出,如果项目本身提交次数很多,则需要等待全部执行完成
5. 上一条脚本信息执行完成后,执行一下git命令
git push --force --tags origin 'refs/heads/*'
查看提交的日志信息,用户名和邮箱已经修改过来了 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210714153030167.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ppbmNoZW5nXzkyMQ==,size_16,color_FFFFFF,t_70#pic_center)
git服务端也修改成功 6. 清理本地信息
cd ..
rm -rf test01.git
备注
git clone --bare 没有clone项目的全部文件,所以修改完用户名和邮箱,可以直接清理掉如果本地之前有clone过完整项目,建议直接清理掉,再重新clone.(我一开始直接pull,再push,发现本地历史记录又覆盖了之前修改的用户名和邮箱,清理掉,直接重新clone,就没有问题了)
|