Git中回退已撤销的合并操作问题求助
解决误合并撤销后hotfix同步及功能回退问题
问题根源
你通过Azure DevOps「Revert PR」生成的反向提交,在合并main到develop时会被同步过去,抵消了develop原本的功能变更;同时main上的这个反向提交会让后续dev→main的PR判定原功能提交已处理,无法再次合并。
解决方案一:撤销main上的Revert提交(适合main未被广泛拉取的场景)
- 拉取最新main分支:
git checkout main && git pull - 执行
git log --oneline找到Revert PR对应的提交哈希(通常带有"Revert"前缀)。 - 撤销该Revert提交(因是合并提交,
-m 1指定以main为主父分支):git revert -m 1 <revert-commit-hash> - 推送新提交到远程main:
git push - 此时再将main合并到develop,不会携带反向撤销提交,develop的功能会自动恢复;后续从dev向main发起PR时,原功能提交会被正常识别并合并。
解决方案二:Cherry-pick hotfix到develop(更安全,避免修改main历史)
如果main分支已被多位开发者拉取,修改历史可能引发同步冲突,推荐使用这个方法:
- 拉取最新develop分支:
git checkout develop && git pull - 执行
git log --oneline main筛选出Revert提交之后的所有hotfix提交哈希。 - 将这些hotfix提交逐个cherry-pick到develop:
git cherry-pick <hotfix-commit-1> <hotfix-commit-2>...- 若遇冲突,解决后执行
git cherry-pick --continue;放弃操作则用git cherry-pick --abort。
- 若遇冲突,解决后执行
- 推送更新后的develop到远程:
git push - 后续从dev向main发起PR时,原功能提交会与main上的Revert提交形成diff,合并PR后即可恢复原功能,同时保留hotfix变更。
内容的提问来源于stack exchange,提问作者link64
相关产品推荐
相关产品推荐

