如何修改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
相关产品推荐
相关产品推荐

