批量修改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栏目.

相关推荐
Bigger13 小时前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
DianSan_ERP1 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
红豆子不相思1 天前
Tomcat 环境搭建与集群实战
服务器·git·tomcat
杰哥技术分享2 天前
Git 仓库迁移技术文档:从 CODING.net 迁移至腾讯云 CNB
git
梅孔立2 天前
Ansible 100 台服务器一键管控实战 进阶版
服务器·git·ansible
qq_426003962 天前
git切换当前分支到远程分支
git
ON10N2 天前
100% 纯 Vibe Coding,我是怎么用 AI 撸出一个 VS Code 插件的
git·ai编程·visual studio code
Lunar*3 天前
告别臃肿!使用 git-filter-repo 优雅清理 Git 历史记录
git
tq10863 天前
agent 记忆 = markdown + json + git
人工智能·git
何以不说话3 天前
DevOps、Git 和 GitLab
git·gitlab·devops