批量修改Git已有commit中username
之前很长一段时间GitHub上的提交都在使用工作账户, 导致私人仓库中的提交者比较混乱. 在StackOver里面找到了一个bash脚本可以批量修改username, 在这里记录一下.
修改的步骤一共两步:
- 执行修改脚本
- 将本地修改同步到Git服务器
1. 运行脚本
首先我们来看脚本:
#!/bin/sh
git filter-branch -f --env-filter '
OLD_EMAIL="your-old@email.com"
CORRECT_NAME="correct-git-username"
CORRECT_EMAIL="your-new@email.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
新建一个rewrite.sh
文件, 将脚本中的OLD_EMAIL
, CORRECT_NAME
和CORRECT_EMAIL
按照需要修改, 并将改脚本放到需要修改的项目的根目录下执行.
bash ./rewrite.sh
2. 同步Git log到服务器
查看打印信息如果显示修改成功, 可以执行命令:
git log
该命令可以查看已有commit信息的修改情况, 如果是正确的, 则执行git push -f
即可将修改内容同步到Git服务器上.