java成长路漫漫

git 更改所有提交记录中的用户名称和电子邮件地址

2020-06-12  本文已影响0人  WillM

git要修改历史记录中所有提交用户名称或电子邮件地址,可以执行如下操作:

1.在仓库根目录下新建脚本rename.sh

#!/bin/sh
#更改提交中所有邮箱为OLD_EMAIL或用户名为OLD_NAME的为新的用户名和新的邮箱

git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
OLD_NAME="Your Old Name"
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_NAME" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' -f --tag-name-filter cat -- --branches --tags    #-f为强行覆盖
#取消下面的#注释,将自动强行推送所有修改到主分支
#git push origin master --force

2.执行一下命令赋予超级权限(如果文件权限不够)

sudo chmod 777 rename.sh

3.执行rename.sh脚本

./rename.sh

这样可以用gitk . 或git log看到所有的提交记录用户信息都被修改了;


image.png

4.执行–force的推送命令,强行推送到服务器

git push origin master --force

缺点

在github/gitlab/gitee等项目管理中会看到提交总次数增加,但此问题不影响原commit信息的准确性

官方参考文档

https://help.github.com/en/github/using-git/changing-author-info
有参考其他文章但无法找到原作者

上一篇下一篇

猜你喜欢

热点阅读