Libon

修改 Git 提交的作者信息

2023/06/23 修改 git 提交的作者信息 #git#shell

ToC

在极少的情况下我们修改了自己在 GitHub/GitLab 等代码托管平台的用户名以后,也会想要把以前提交过代码的仓库里的提交人信息也一起修改,否则在查看提交信息的时候会出现两个不同的用户名,这样就很不美观了。虽然这种情况很少见,但是不代表不会有这种需求,所以这里就记录一下如何达到这种效果。

git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
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

在上述的 shell 语句中声明了两个变量,OLD_EMAIL 为旧的邮箱地址,CORRECT_NAME 为正确的用户名,CORRECT_EMAIL 为正确的邮箱地址,然后在 if 语句中判断当前的提交人邮箱是否为旧的邮箱地址,如果是的话就把提交人的用户名和邮箱地址修改为正确的用户名和邮箱地址,这样就可以达到修改提交人信息的目的了。在修改完成以后强制推送一下覆盖远程的信息即可。

git push --force
CD ..
回顾上一篇
CSS Conditional Rules