批量解决已提交的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_EMAIL
、CORRECT_NAME
、CORRECT_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/*'