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

如何修改Git中满足指定判断条件的特定提交的作者信息

Git 修改满足指定条件的历史提交作者方案

方法1:使用 git filter-repo(适合提交数量多的场景)

git filter-repo 是 Git 官方推荐替代废弃的 git filter-branch 的历史改写工具,支持通过自定义回调逻辑仅修改符合条件的提交:

  1. 新建回调脚本 modify-author.py,内容如下:
if b'My Commit Message' in commit.message:
    commit.author_name = b'New Name'
    commit.author_email = b'name@email.com'
    # 如果需要同时修改提交者信息,加上下面两行
    commit.committer_name = b'New Name'
    commit.committer_email = b'name@email.com'

把其中的提交信息匹配关键字、新作者名和邮箱替换为你的实际值。
2. 执行改写命令:

git filter-repo --commit-callback "$(cat modify-author.py)"

方法2:使用交互式 rebase(适合提交数量少的场景)

如果需要修改的提交数量不多,可以用交互式 rebase 逐个修改:

  1. 先执行你原来的筛选命令,拿到所有需要修改的提交哈希:
git log --pretty=format:'%H %s' | grep 'My Commit Message' | awk '{print $1}'
  1. 找到这些提交中最早的那个哈希,取它的前一个提交作为 rebase 起点,执行交互式 rebase:
git rebase -i <最早需要修改的提交哈希>^
  1. 在弹出的编辑界面中,把所有需要修改的提交前面的 pick 改为 edit,保存退出
  2. 每次 rebase 停下来等待修改时,执行以下命令更新作者信息:
git commit --amend --author="New Name <name@email.com>" --no-edit
git rebase --continue

重复这个过程直到所有 rebase 任务完成。

注意事项

  • 两种方法都会重写修改点之后所有提交的哈希,操作前务必备份完整仓库
  • 如果修改的提交已经推送到远程仓库,推送时需要加 --force 参数,同时要通知所有协作的开发者同步拉取新的分支历史,避免出现冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:21:03