纠正Mercurial错误的正确方法?

时间:2013-04-21 23:00:27

标签: mercurial

所以我刚刚开始使用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因为它是合并。我最终让一切正常,但有很多移植,更新和合并。看起来似乎应该有一个简单的方法来解决这个问题,同时保持其他一切向前发展。谢谢!

2 个答案:

答案 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