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

如何修改GitHub与PyCharm中已合并分支的提交作者名?

修改已合并分支的提交作者名

1. 修复rebase命令报错

你之前使用的-p/--preserve-merges参数已被Git废弃,需替换为--rebase-merges,正确的交互式变基命令为:

git rebase -i --rebase-merges [目标提交的父哈希]

这里的「目标提交的父哈希」指你要修改的最早提交的上一个提交哈希(例如要修改从abc123开始的所有提交,参数填abc123^)。

2. 交互式修改提交作者信息

执行命令后会弹出文本编辑器:

  • 将所有需要修改作者的提交前的pick替换为edit(或缩写e)
  • 保存并退出编辑器

Git会逐个暂停在标记为edit的提交上,对每个提交执行以下命令:

# 替换为你的GitHub用户名和邮箱,修改当前提交的作者信息
git commit --amend --author="你的GitHub用户名 <你的GitHub邮箱>" --no-edit
# 继续处理下一个提交
git rebase --continue

重复操作直到所有目标提交处理完成。

3. 推送修改后的分支(若已推送到远程)

由于修改了Git提交历史,需强制推送,但推荐使用更安全的--force-with-lease(避免覆盖他人的远程提交):

git push --force-with-lease

批量修改所有提交作者的快捷方式

如果需要修改该分支下所有旧作者的提交信息,可运行以下脚本(注意:会修改完整提交历史,谨慎使用):

git filter-branch --env-filter '
OLD_NAME="你的旧用户名"
OLD_EMAIL="你的旧邮箱"
NEW_NAME="你的GitHub用户名"
NEW_EMAIL="你的GitHub邮箱"

if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ] && [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ] && [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

执行完成后同样需要执行git push --force-with-lease推送修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:03:08