Skip to content

批量修改 Git 已有 commit 中的 username

291字小于1分钟

Git

2024-07-10

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

修改的步骤一共两步:

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

运行脚本

rewrite.sh
#!/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_NAMECORRECT_EMAIL 按照需要修改, 并将改脚本放到需要修改的项目的根目录下执行.

bash ./rewrite.sh

同步 Git log 到服务器

查看打印信息如果显示修改成功, 可以执行命令:

git log

该命令可以查看已有 commit 信息的修改情况, 如果是正确的, 则执行 git push -f 即可将修改内容同步到 Git 服务器上.

变更历史

最后更新于: 查看全部变更历史
  • docs: update docs

    于 2024/11/19
  • 更改navbar

    于 2024/11/4
  • 整理文章代码格式

    于 2024/11/1
  • 升级主题+整理文章格式

    于 2024/11/1
  • 整理文章格式

    于 2024/10/29
  • update

    于 2024/10/17
  • 新增文字+CRLF全部替换为LF

    于 2024/10/17
  • 给予文件夹顺序

    于 2024/9/24
  • 调整博客分类+修改about-me.md

    于 2024/9/24
  • first commit

    于 2024/9/20