批量修改GIT历史用户信息

批量解决已提交的GIT历史用户信息错误问题。

第一步:拉取代码

git clone --bare https://github.com/user/repo.git
cd repo.git

第二步:创建脚本

touch batch-git.sh
chmod 777 batch-git.sh

脚本内容如下:

#!/bin/sh

git filter-branch --env-filter '
OLD_EMAIL="<需要修改的邮箱地址>"
CORRECT_NAME="<修改后的用户名>"
CORRECT_EMAIL="<修改用的邮箱地址>"

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

第三步:修改脚本参数

OLD_EMAILCORRECT_NAMECORRECT_EMAIL改成自己的新旧邮箱用户名即可,然后我们来执行一下这个.sh文件

./batch-git.sh

第四步:修改失败处理方式

如果执行失败,执行以下命令后再运行:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

第五步:PUSH至远程仓库

把正确历史 push到Git远程仓库:

git push --force --tags origin 'refs/heads/*'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,736评论 9 163
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,987评论 3 27
  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,456评论 0 3
  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 1,951评论 1 8
  • 车链启示 夏季 午后 雨初过 想去逛街 准备骑车 但弃置太久 链条早已生锈 忽然想起老同学 打个电话 表示问候 ...
    莫须有V阅读 293评论 0 2