如何撤销已推送至GitHub PR的最后一次Git提交?
撤销已推送的最后一次提交的最佳方案
针对你已经推送到远程、且有开放PR的场景,有两种靠谱的处理方式,按需选择:
推荐方案:用git revert(不修改历史,协作友好)
这种方式会生成一个新的提交,专门抵消最后一次提交的所有改动,不会改写远程仓库的提交历史,对团队协作更友好,也能让PR自动同步状态:
- 切换到你的PR分支:
git checkout your-pr-branch - 执行撤销命令:
git revert HEAD
执行后会弹出编辑器,默认的提交说明是Revert "last commit",直接保存退出就行 - 推送新的撤销提交到远程:
git push origin your-pr-branch
推送完成后,你的PR就会自动回到yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy那次提交的状态
备选方案:git reset+强制推送(直接移除提交,需谨慎)
如果这个PR分支只有你自己在维护,或者团队明确允许改写分支历史,可以用这种更直接的方式:
- 切换到PR分支:
git checkout your-pr-branch - 重置到上一次提交:
git reset --hard HEAD^HEAD^指向当前提交的父提交,也就是你要恢复到的yyyyyyyy...状态 - 强制推送到远程:
git push origin your-pr-branch --force
注意:强制推送会覆盖远程分支的历史,如果有其他人同步过这个分支,会导致他们的本地分支和远程冲突,所以只适合单人维护的分支
方案对比
- 优先选
git revert:不需要和其他协作者协调,PR的提交历史清晰,后续不会有遗留问题 - 仅在单人场景下用
git reset方案:操作更简洁,但风险更高
内容的提问来源于stack exchange,提问作者PlayHardGoPro
相关产品推荐
相关产品推荐

