Version control 我怎样才能撤销Mercurial中的合并,然后再与该分支重新合并?
我有两个分支,default和branch1。我们团队中有一个人错误地合并了branch1和default。branch1中的内容尚未准备好与默认值合并(它包含对构建和部署环境的重大修改) 我们用“hg backout”做了一个实验,退出合并(不确定这是正确的方法)。然后默认情况下,branch1中的更改会被删除,这很好,但我们不能与branch1重新合并Version control 我怎样才能撤销Mercurial中的合并,然后再与该分支重新合并?,version-control,mercurial,dvcs,Version Control,Mercurial,Dvcs,我有两个分支,default和branch1。我们团队中有一个人错误地合并了branch1和default。branch1中的内容尚未准备好与默认值合并(它包含对构建和部署环境的重大修改) 我们用“hg backout”做了一个实验,退出合并(不确定这是正确的方法)。然后默认情况下,branch1中的更改会被删除,这很好,但我们不能与branch1重新合并 我们应该如何解决这个问题?您不能很好地撤销合并。在我看来,最好的处理方法就是放弃合并,继续合并前的变更集串,留下一个悬垂的头部(可以剥离)。
我们应该如何解决这个问题?您不能很好地撤销合并。在我看来,最好的处理方法就是放弃合并,继续合并前的变更集串,留下一个悬垂的头部(可以剥离)。如果合并后发生了其他更改,则可以将这些更改重新设置到新的“良好”标题上。此答案假设您已按下 这将导致(至少一个)未解决的头部,这取决于您刚才忘记了什么。更多取决于谁刚刚从哪个分支推出 我喜欢HG并热衷于使用它,但他们关于分支的想法与(设计上)故意不改变的历史结合在一起时,会让人抓狂 正因为这个原因,我通常在进行分支合并之前(本地)克隆回购的备份。我总是在拉之前检查一下 Eric Raymond或多或少不知道DVCS,它可以(希望)在类似于您描述的oops的情况下提供帮助,但我认为他不会在接下来的一两周内完全实现HG支持。不过,这可能值得一看
但是,只有在没有人使用“oopsie”提示的情况下才有用。这里有很多场景,您可能需要这样做,我将每个场景作为标题,以便您可以找到适合您情况的场景。请注意,我仍在学习Mercurial,如果我所说的是错误的,使用错误的术语,我希望得到一些提示,可以做得更好,等等 无进一步更改,合并未共享(无推/拉) 程序员已经合并,但没有做任何其他事情,也没有以任何方式与任何人共享更改 在这种情况下,只需丢弃本地克隆,并从安全存储库中获取新克隆 合并顶部的本地更改,而不是共享 程序员已经合并,并在合并的基础上继续工作。合并后的变更集应该保留,但合并本身应该删除。更改(合并+以下更改集)尚未与任何人共享 在这种情况下,我将执行以下四种操作之一:
hg strip <hash of merge changeset>
hg带
hg clone damaged -r <hash of first parent> .
hg pull damaged -r <hash of second parent>
hg克隆已损坏-r。
hg拉力损坏-r
M <-- this is the one you want to disregard
/ \
* *
| |
* *
| |
M感谢大家的大力支持!由于我们急于解决这个问题,而且我们的团队对Mercurial比较陌生,所以我们采用了非常务实的解决方案
在我们的存储库服务器上,我们创建了一个新的存储库,然后克隆了旧的存储库,直到合并之前的修订版本。然后将新克隆推送到服务器,并将新链接发送给所有人。幸运的是,我们是一个相当小的开发团队
也许不是解决这个问题的最舒适的方法,但它确实奏效了:)我遇到了这个问题。一位同事在我的分支仍然不完整时,意外地将其合并到默认分支中。起初,我只是退出了合并,这似乎很好,直到我想将我的分支合并到默认值中。我需要的文件在合并时被标记为删除
| |
* *
| M | <-- this is the one you want to disregard
|/ \|
* *
| |
* *
| |
m
/ \
* *
| |
* *
| M | <-- this is the one you want to disregard
|/ \|
* *
| |
* *
| |
7 M remerge
6 / \
5 * | hg backout 3 (backout backout)
4 | * fix error
3 * | hg backout 2
2 M | fail merge
/ \
1 * *
| |