如何撤销Azure DevOps中合并PR时错误的冲突解决方案?
解决Azure DevOps Repositories中错误冲突解决方案的撤销问题
核心思路
先撤销包含错误冲突解决的第二个PR合并记录,消除错误合并对Dev分支的影响,再让Branch B重新与Dev分支触发冲突,进而重新正确解决。
具体步骤
第一步:定位关键提交哈希
在Azure DevOps的PR页面找到已撤销的第二个PR,进入其提交记录,复制两个关键哈希:
- 错误合并对应的SHA-1提交哈希(即PR合并生成的那条提交)
- 该PR合并前,Dev分支的最后一个正常提交哈希
情况1:Dev分支在错误合并后无新提交
- 本地切换到Dev分支:
git checkout dev - 重置Dev分支到错误合并前的状态:
git reset --hard <错误合并前的Dev提交哈希> - 强制推送到远程Dev分支(操作前必须确认团队内无人基于错误合并后的Dev工作):
git push origin dev --force - 切换到Branch B,拉取最新的Dev分支:
此时会重新触发合并冲突,按正确逻辑解决后提交新PR即可。git checkout branch-b git pull origin dev
情况2:Dev分支在错误合并后已有新提交
这种场景不能直接重置(会覆盖他人提交),需用revert撤销错误合并:
- 本地切换到Dev分支:
git checkout dev - 撤销错误的合并提交(
-m 1表示保留Dev分支的主线历史,仅撤销合并带来的变更):git revert -m 1 <错误合并提交的哈希> - 推送revert提交到远程:
git push origin dev - 切换到Branch B,拉取最新的Dev分支:
此时会重新出现冲突,正确解决后提交新PR即可。git checkout branch-b git pull origin dev
注意事项
- 操作远程Dev分支前,务必同步所有团队成员,避免他人工作丢失。
- 强制推送(
--force)仅适合Dev分支无后续提交的场景,多人协作优先使用revert方式。 - 重新解决冲突时,仔细核对Branch A与Branch B的变更点,确保合并结果符合预期。
内容的提问来源于stack exchange,提问作者Courier
相关产品推荐
相关产品推荐

