git 重写提交历史作者

git 修改历史提交记录中的作者信息

为了修改 commit 的作者邮箱地址,你必须重写整个 git 仓库的提交历史。听说有点危险,但我操作过很多次了,好像也没啥事儿,大不了不提交呗,还能爆炸吗?
《git 重写提交历史作者》

操作步骤

找到所有的作者,找出你想统一换成哪个,脚本每次只能更换一个,如果有多个有统一的名字,需要操作多次。

git log | grep Author | sort | uniq

我们需要一个脚本,内容大概是下面这样的,将里面的三个变量换成你自己需要的。

#!/bin/sh
git filter-branch --env-filter '

OLD_EMAIL="youremail@eamil.com"
CORRECT_NAME="yourname"
CORRECT_EMAIL="yourtrueemail"
echo $GIT_AUTHOR_EMAIL"     "$GIT_COMMITTER_EMAIL;
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] || [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' -f --tag-name-filter cat -- --branches --tags

项目目录中,创建 run.sh 脚本,增加可执行权限,然后执行脚本。在执行前,需要注意将自己的缓存区stash一下,一面丢失劳动成功。
修改完成之后,再如下操作。

git push --force

参考资料

  1. https://segmentfault.com/a/1190000008828569
点赞