批量修改Git历史commit信息中的username

之前很长一段时间GitHub上的提交都在使用工作账户, 导致私人仓库中的提交者比较混乱. 在StackOver里面找到了一个bash脚本可以批量修改username, 在这里记录一下.

修改的步骤一共两步:

  1. 执行修改脚本
  2. 将本地修改同步到Git服务器

首先我们来看脚本:

bash 复制代码
#!/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

将脚本中的OLD_EMAIL, CORRECT_NAMECORRECT_EMAIL按照需要修改, 并将改脚本放到需要修改的项目的根目录下执行.

查看打印信息如果显示修改成功, 则执行git push -f即可将修改内容同步到Git服务器上.

如果想要了解更多关于Git的使用技巧, 可以查看我的技术博客-Git栏目.

相关推荐
悦悦欧呐呐呐呐1 小时前
git 设置邮箱和用户名
git
正经教主1 小时前
【Git】Git06:Git 管理 Android 项目教程(含GitHub)
android·git
艾莉丝努力练剑5 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
liuyao_xianhui16 小时前
版本控制器git--gdb/cgdb
linux·运维·服务器·git
徐同保17 小时前
如何使用GitKraken把git项目迁移到另一个平台,并保存所有提交记录,例如把github上的项目,迁移到gitee
git·gitee·github
高小秋18 小时前
项目开发使用 git工作流插件 -- jgitflow开发实践
git
tealcwu18 小时前
【软件工程】浅析Git message, version, changelog之间的关系
git
五号厂房20 小时前
Git Worktree 使用指南
git
秦jh_21 小时前
【git】企业级开发模型
git
y***54881 天前
Git在开源项目中的协作
git