Azure DevOps中撤销PR后,如何重新合并原变更至main分支?
解决Azure Repos中撤销PR后重新合并变更的问题
问题根源
当你通过revert操作撤销了dev到main的PR合并后,main分支的历史中已经包含了“抵消原变更”的提交。Git会判定dev分支的原变更已经是main的历史子集,因此新PR不会识别这些变更为待合并内容。
可行解决方案
方案1:撤销之前的Revert提交
这是最直接的恢复方式,适用于revert提交尚未被大量同步的场景:
- 在Azure Repos或本地Git中找到之前执行revert生成的提交ID
- 切换到本地main分支并拉取最新代码:
git checkout main git pull - 执行revert命令撤销之前的撤销操作:
git revert <revert提交的ID> - 将新提交推送到远程main分支,之后可以直接将dev分支的变更同步到main,或重新发起PR(此时原变更会被正确识别)
方案2:在dev分支重新生成等价变更
如果main分支的revert提交已经被团队成员广泛拉取,为避免改写共享历史,可采用此方法:
- 基于最新的main分支创建新的开发分支:
git checkout main git pull git checkout -b dev-restore-changes - 重新实现原变更内容:
- 若原变更来自单个提交,可使用cherry-pick(需处理可能的冲突):
git cherry-pick <原变更的提交ID> - 若为多个提交,可手动复制修改内容,或通过rebase将原变更移植到新分支
- 若原变更来自单个提交,可使用cherry-pick(需处理可能的冲突):
- 提交并推送新分支到远程,基于该分支创建PR到main,此时PR会正常显示待合并的变更
方案3:重新打开原PR(限原PR未删除)
如果原PR仍存在于Azure Repos中:
- 在Azure Repos的PR列表中找到原PR
- 点击“重新打开”按钮
- 解决分支间的冲突后,重新发起审批合并流程
关键注意事项
- 操作前必须拉取远程最新代码,确保本地分支与远程一致
- 对main分支操作时,优先使用
git revert而非git reset,避免改写共享分支的历史 - 团队协作场景下,操作前需同步所有相关成员,避免引发代码冲突或混乱
内容的提问来源于stack exchange,提问作者Maheswara Reddy Yarramreddy
相关产品推荐
相关产品推荐

