You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Git历史提交作者信息以关联GitHub账户

修改Git历史提交的作者信息并关联GitHub账户

核心问题说明

GitHub统计账户贡献的依据是提交的邮箱地址是否与你的GitHub账户绑定,仅修改用户名无法关联贡献,这是你之前操作无效的关键原因。

正确操作步骤

1. 修正本地Git全局配置(避免后续提交再出错)

git config --global user.name "你的GitHub用户名"
git config --global user.email "你GitHub账户绑定的已验证邮箱"

2. 彻底重写所有历史提交的作者信息(同时修改用户名和邮箱)

先通过以下命令查看历史提交的错误作者名和邮箱:

git log --format="%an <%ae>"

替换下面命令中的变量后执行,批量修改所有符合条件的提交:

git filter-branch --env-filter '
OLD_NAME="你的错误用户名"
OLD_EMAIL="提交记录里的错误邮箱"
CORRECT_NAME="你的GitHub用户名"
CORRECT_EMAIL="你GitHub绑定的邮箱"

if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ] || [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]; then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
  • --branches --tags 确保修改所有分支和标签的历史
  • --tag-name-filter cat 保留原标签名称,仅更新标签关联的提交信息

3. 清理filter-branch生成的历史备份

之前的操作生成了refs/original备份,执行以下命令彻底删除所有备份:

git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin

4. 强制推送修改后的历史到远程仓库

由于重写了Git历史,必须强制推送覆盖远程记录:

git push --force --all
git push --force --tags

注意事项

  • 若为协作仓库,强制推送前必须告知所有协作成员,让他们丢弃本地旧历史并重新拉取最新版本,避免代码冲突。
  • 确认你的CORRECT_EMAIL已在GitHub账户中验证,否则GitHub不会将这些提交统计到你的贡献记录里。
  • 若推送后无反馈,先通过git log --format="%an <%ae>"检查本地提交信息是否已修改,再确认远程分支名称是否与本地一致(比如当前主流分支名是main而非master)。

内容的提问来源于stack exchange,提问作者Caio Cunha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:33:28