如何回退Azure托管Main分支中误合并的Pull Request
Azure DevOps 错误合并Main分支恢复操作步骤
无法找到工作分支的原因
Azure DevOps 网页端默认的 revert 入口需要选择合并源分支,若你的工作分支已删除、未推送至远端、权限不足,就不会出现在可选列表中,可通过以下两种方案完成恢复:
方案一:本地Git操作(推荐,可控性更高)
- 先切换到本地Main分支并同步最新远端状态:
git checkout main git pull origin main
- 查看提交历史,获取目标提交哈希:
git log --oneline
找到你错误合并操作对应的合并提交哈希(日志会标注Merge pull request相关记录),或合并前Main分支最后一个正常提交的哈希,复制前7位即可 - 根据场景选择撤销方式:
- 保留提交历史(推荐,不会改写团队已有提交记录,无需强制推送权限):
执行命令生成撤销合并的新提交:git revert -m 1 <合并提交的哈希值>-m 1表示以合并的第一个父提交,即合并前Main分支的状态为基准撤销所有变更
执行完成后正常推送即可:git push origin main - 抹除错误合并的提交(仅适合团队无人拉取过最新错误版本Main分支的场景,需要强制推送权限):
执行命令直接回退到合并前的正常提交:git reset --hard <合并前正常提交的哈希值>
执行完成后强制推送至远端:git push origin main -f
- 保留提交历史(推荐,不会改写团队已有提交记录,无需强制推送权限):
方案二:网页端直接操作(无需本地Git环境)
- 打开项目的「Repos」-「Commits」页面,切换到Main分支
- 找到你错误合并对应的合并提交记录,点击进入提交详情页
- 点击详情页右上角的三个点更多选项按钮,选择「Revert」
- 此时系统会自动基于该合并提交生成撤销变更,无需选择原工作分支,按照页面提示创建Pull Request,合并到Main分支即可完成恢复
注意事项
- 若使用强制推送的reset方案,务必提前和团队成员同步,避免其他人本地Main分支和远端出现冲突
- 推荐优先使用revert方案,不会改写提交历史,也不会影响其他成员的正常协作
内容的提问来源于stack exchange,提问作者kingofeverything
相关产品推荐
相关产品推荐

