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

执行Git rebase操作时如何不修改未编辑提交的committer信息

Git rebase修改历史作者时保留其他提交committer信息的解决方案

问题根因

Git的每个commit包含两类身份标识:

  • author:代码的实际编写提交者
  • committer:最后将该commit纳入仓库的操作者
    rebase操作的本质是重写目标分支所有涉及的commit哈希,因此默认会把所有经过重写的commit的committer信息更新为当前操作的用户和当前时间,哪怕你没有修改这些commit的内容,就会出现其他协作者的提交显示你为committer的问题。

推荐方案:使用git filter-repo批量修改指定提交的作者

这是Git官方推荐的历史修改工具,只会修改你指定匹配规则的提交,完全不会改动其他提交的任何元信息,操作更安全,步骤如下:

  1. 确保仓库已经重置到rebase前的干净状态,无未提交的变更
  2. 执行以下命令,替换其中的对应参数为你自己的信息:
git filter-repo --commit-callback '
# 匹配你需要修改的旧作者邮箱
if commit.author_email == b"your_old_email@example.com":
    commit.author_name = b"Your Correct Username"
    commit.author_email = b"your_new_email@example.com"
'
  1. 执行完成后检查提交历史,只有你匹配到的提交的作者信息会被修改,其他协作者的提交的author、committer信息完全不变。

提示:如果你的环境没有预装git filter-repo,可通过pip、brew、apt等常用包管理器直接安装。

备选方案:交互式rebase场景下保留committer信息

如果你必须使用交互式rebase完成修改,可以在执行rebase前设置配置项强制复用原有committer信息,Git 2.38及以上版本支持以下操作:

  1. 执行以下命令开启保留committer配置:
git config rebase.updateCommitter never
  1. 按照你原来的步骤执行交互式rebase修改指定提交的作者即可,未编辑的提交会保留原有committer信息。
  2. 操作完成后可以按需恢复默认配置:
git config --unset rebase.updateCommitter

注意:修改仓库历史提交后需要执行强制推送更新远端分支,操作前请务必同步所有协作者,避免影响其他人的本地开发分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 20:24:05