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

如何批量修改Git中已推送的多笔提交的作者信息?

批量修改Git提交的作者信息

当然可以批量修改提交的作者信息,无需逐个操作;也能指定提交范围只修正错误作者的提交,之后用git push --force-with-lease更新远程master分支,以下是具体方法和注意事项:

一、批量修改所有错误作者的提交

推荐使用git filter-repo(Git官方已弃用git filter-branch,后者存在性能和安全问题),操作前务必备份本地仓库(复制整个文件夹即可),避免数据丢失。

1. 修正指定错误邮箱/用户名的所有提交

执行以下命令,将错误的作者信息替换为正确内容:

git filter-repo --mailmap <(echo "正确姓名 <正确邮箱> 错误姓名 <错误邮箱>")

如果只需要修正邮箱,不需要修改姓名,可以用:

git filter-repo --email-callback 'return b"正确邮箱" if email == b"错误邮箱" else email'

二、指定提交范围修改(仅修正夹杂在其他提交中的错误作者记录)

如果只需要修改某一段提交范围内的错误作者信息,且保留其他作者的提交不变,可以用带条件判断的git filter-repo命令:

  1. 先确定要修改的提交范围,比如要修改从提交abc123到当前HEAD的所有提交(abc123是范围起始提交的父提交哈希);
  2. 执行以下命令,仅替换错误邮箱对应的作者信息:
git filter-repo --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "错误邮箱" ]; then
    GIT_AUTHOR_NAME="正确姓名"
    GIT_AUTHOR_EMAIL="正确邮箱"
    # 同时修正提交者信息(如果需要的话)
    GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
    GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
fi
git commit-tree "$@"
' --refs refs/heads/master --not abc123

--not abc123表示只处理abc123之后的提交,不会影响之前的历史。

三、推送修改后的历史到远程master

修改完成后,需要强制推送更新远程分支,推荐使用--force-with-lease(比--force更安全,会检查远程分支是否有你未同步的新提交,避免意外覆盖他人工作):

git push --force-with-lease origin master

重要注意事项

  • 修改提交历史是破坏性操作,必须提前告知团队所有成员,让他们暂停在该分支的工作;
  • 其他成员在你推送后,需要同步本地仓库:先执行git fetch origin,再用git reset --hard origin/master(注意:此操作会清除本地未提交的修改,需提前备份);
  • 如果远程分支有其他人的新提交,修改前要先拉取合并,否则强制推送会覆盖这些提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:01:03