如何修改已被接受的Pull Request中提交的作者信息?
修改已合并提交的作者信息
因为提交已经合并到远程仓库的X0分支,修改作者信息需要重写Git历史,操作前必须和团队成员沟通确认,避免造成代码冲突。以下是两种场景的解决方案:
场景1:仅单个提交需要修改作者信息
- 切换到X0分支并拉取最新代码:
git checkout X0 git pull origin X0 - 启动交互式变基,定位到要修改的提交(把
N替换为从目标提交到当前HEAD的提交数):
在弹出的编辑器中,找到目标提交的行,将开头的git rebase -i HEAD~Npick改为edit,保存退出。 - 修改该提交的作者信息:
git commit --amend --author="user_x <user_x@email.com>" --no-edit - 完成变基:
git rebase --continue - 强制推送到远程分支(这会覆盖远程历史,务必确认团队知情):
git push -f origin X0
场景2:多个提交都使用了错误的作者信息
- 切换到X0分支并拉取最新代码:
git checkout X0 git pull origin X0 - 执行
filter-branch批量替换作者信息:git filter-branch --env-filter ' OLD_EMAIL="user_a@email.com" CORRECT_NAME="user_x" CORRECT_EMAIL="user_x@email.com" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags - 清理变基产生的临时文件:
git update-ref -d refs/original/refs/heads/X0 - 强制推送到远程分支:
git push -f origin X0
后续注意事项
- 团队其他成员需要重新同步X0分支,建议使用:
git fetch origin git reset --hard origin/X0 - 为避免再次出错,建议给当前仓库单独设置正确的用户信息(而非全局配置):
git config user.name user_x git config user.email user_x@email.com
内容的提问来源于stack exchange,提问作者Janzaib M Baloch
相关产品推荐
相关产品推荐

