背景:
公司用的gitlab,自己用的github,二者绑定邮箱不一样,用户名也不一样。某次提交github之后发现上面显示的是gitlab的user.name,而非github的,并且gitlab上面contributions没有显示绿色小格子。这是因为github绑定的邮箱和我提交代码的用户绑定的邮箱不一样,相当于是“另一个用户”在提交。没有绿色小格子着实难受,那么怎么将git已提交记录的作者改回来呢?
解决方法:
1、在git项目下,新建一个shell脚本文件,此处我命名为modify_author.sh:
image
2、接着我们编写此脚本如下,只需要将[XXX]替换成对应的值即可:
#!/bin/sh
git filter-branch --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_COMMITTER_EMAIL" = "[Your Old Email]" ]
then
cn="[Your New Author Name]"
cm="[Your New Email]"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[Your Old Email]" ]
then
an="[Your New Author Name]"
am="[Your New Email]"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
3、运行脚本:./modify_author.sh:
image
4、git log查看被修改的提交记录,会发现所显示的邮箱和用户名已变成修改后的了:
image
5、git push --force --tag origin 'refs/heads/*' 把正确的历史提交记录提交的到github服务器:
image
6、然后我们去gitlab上就能看到提交记录的名字也全部改过来了,并且之前没有出现的绿色小格子也全部补回来了!!!(开心)