Git远程仓库已推送错误合并的修复步骤正确性验证问询
修正你的Git操作步骤,避免提交树混乱
咱们先理清楚你的场景:你误将stage分支合并到了任务分支ISSUE-1771,并且已经推送到远程仓库,现在想要安全撤销这个合并,同时把ISSUE-1771的正确代码合并回stage对吧?你的思路方向是对的,但步骤里有几个关键错误,我帮你修正并解释清楚:
首先:正确撤销误合并的提交
从你给出的提交记录来看,你需要撤销的是那个合并提交(哈希0b72152),而不是之前的87f0fc3——87f0fc3是你ISSUE-1771分支合并前的最后一个正常任务提交,不是你要回退的对象。
正确的撤销步骤:
- 确保你在
ISSUE-1771分支上:git checkout ISSUE-1771 - 针对合并提交执行revert操作(
-m 1表示保留第一个父节点的状态,也就是ISSUE-1771合并前的代码状态):git revert 0b72152 -m 1这里要注意:
-m参数仅用于合并提交(有多个父节点的提交),如果用在普通提交上会报错,这也是你原来步骤的核心问题。 - 将生成的revert提交推送到远程仓库:
git push origin ISSUE-1771
这样操作后,ISSUE-1771的代码就回到了合并前的状态,而且是通过新增一个revert提交来实现的,不会改写已经推送到远程的历史,完全不用担心提交树混乱。
然后:将ISSUE-1771的正确代码合并到stage
你原来的步骤有重复操作,且缺少拉取远程stage最新代码的环节,修正后的步骤如下:
- 确保你已经完成上面的revert提交推送(这一步很重要,不然合并的还是错误的代码)
- 切换到
stage分支:git checkout stage - 先拉取远程
stage的最新代码,避免合并冲突:git pull origin stage - 合并
ISSUE-1771分支的代码:git merge ISSUE-1771 - 如果合并过程中出现冲突,手动解决冲突后提交,最后推送到远程
stage:git push origin stage
为什么你的原步骤有问题?
- 你原本打算revert的
87f0fc3是普通提交,不是合并提交,使用-m 1会报错,而且这也不是你要撤销的误合并操作; - 后续合并步骤重复了
git push origin ISSUE-1771,且没有先拉取远程stage的最新代码,容易导致合并冲突或提交历史不一致。
按照修正后的步骤操作,就能安全解决你的问题,同时保持提交树的清晰。
内容的提问来源于stack exchange,提问作者GoBear
相关产品推荐
相关产品推荐

