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
有参考其他文章但无法找到原作者