所以我刚刚开始使用Mercurial并遇到了一个我不确定如何正确处理的问题。以下是示例场景:
Demo Branch --- Good Change 1 --- Bad Change 2 --- Good change 3 --- Good change 4
Prod Branch --- \Good Change 1 --- \Bad Change 2 --- \Good Change 3 --- \Good Change 4
所以基本上一个好的变化已经提交,测试并与生产合并。比较糟糕的变化进行了测试,假定工作,并推动生产。最后,两个更好的变化被推向生产。我们现在意识到“呃 - 哦”第二次改变实际上是一个问题!我们需要恢复这一点,但我们仍然在那里做出了很好的改变3和4。
Backout处理演示但不是prod因为它是合并。我最终让一切正常,但有很多移植,更新和合并。看起来似乎应该有一个简单的方法来解决这个问题,同时保持其他一切向前发展。谢谢!
答案 0 :(得分:0)
Backout处理演示但不是prod因为它是合并
WTF?如果变更集是repo中的普通变更集,则在推送此变更集后,它将是相同的变更集。
Push!= merge,永远不会合并。如果你想丢弃变更集,可以在源存储库中退出(因此 - 获取新的附加变更集)并发布此更改,你必须将backout-changeset推送到prod (脏历史,但正确的状态毕竟是回购)
答案 1 :(得分:0)
我的理解是这就是事情的开始。
Demo G1----B2----G3----G4
\ \ \ \
Prod ----M1----M2----M3----M4
...然后你退出了演示分支上的错误更改
Demo G1----B2----G3----G4----BOB2
\ \ \ \
Prod ----M1----M2----M3----M4
此时您需要做的就是再次合并
Demo G1----B2----G3----G4----BOB2
\ \ \ \ \
Prod ----M1----M2----M3----M4-----M5
退出更改集与任何其他更改集没有区别。它只是与原作相反的效果。我认为你所做的是尝试将包含不良变化的合并退出到你的Prod分支(M2
),但这有一些奇怪的效果,如here所述。
或者你可以在两个分支上退出B2
,这应该没问题。
Demo G1----B2----G3----G4----BOB2
\ \ \ \
Prod ----M1----M2----M3----M4-----BOB2