修改git已提交记录中的author和email

背景:

公司用的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上就能看到提交记录的名字也全部改过来了,并且之前没有出现的绿色小格子也全部补回来了!!!(开心)

你可能感兴趣的:(修改git已提交记录中的author和email)