如何修改已关闭PR中提交的用户名与邮箱?(原仓库为本人维护)
能不能修改已关闭PR里提交记录的用户名和邮箱?
嘿,作为原仓库的维护者,这事完全可以操作,不过因为你删了之前的fork仓库,得走点特殊流程,我给你掰扯清楚:
先搞明白底层逻辑
你关闭的那个PR,哪怕fork仓库删了,GitHub其实会保留PR里提交的快照。咱要做的就是把这些提交拉回本地,改完作者信息再推回原仓库,后续要么开新PR,要么自己留着修正后的分支就行。
具体操作步骤
把PR的提交拉到本地
先记好那个已关闭PR的编号,比如是#123。在本地原仓库的文件夹里,跑这个命令:git fetch origin pull/123/head:pr-123-fix这行命令会把PR里的所有提交,拉到你本地一个叫
pr-123-fix的新分支里。批量替换用户名和邮箱
接下来用Git的脚本批量改提交信息,在仓库根目录运行这段命令(记得把里面的旧邮箱、新用户名新邮箱换成你自己的):git filter-branch --env-filter ' OLD_EMAIL="你的旧邮箱地址" CORRECT_NAME="你想要的新用户名" CORRECT_EMAIL="你想要的新邮箱地址" 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 pr-123-fix它会把
pr-123-fix分支里所有匹配旧邮箱的提交,作者和提交者信息都换成你指定的新内容。强制推回原仓库
因为改了提交历史,得强制推到原仓库的新分支:git push origin pr-123-fix --force后续处理(可选)
原PR已经关闭了,旧的提交记录不会被替换(毕竟fork删了),但你可以基于这个修正后的分支开个新PR,或者直接把这个分支合并到主分支里,看你需求。
要注意的小细节
- 改提交历史是个“破坏性”操作,要是有其他人基于旧PR的提交做了修改,得提前沟通好,但你是维护者,这事应该可控。
- 原已关闭PR里的旧记录还会留在GitHub上,但你可以在新PR里说明是修正了作者信息的版本,不影响后续维护。
内容的提问来源于stack exchange,提问作者Vadzim
相关产品推荐
相关产品推荐

