Mercurial:退出公共变更集并重新应用到新的公共分支



我们使用的是窑和Fogbugz;窑应该无缝地允许git和hg一起工作。然而,我们遇到了一个问题,git分支在mercurial中被视为书签;直到推动改革,我们才在回购中发现这一点,现在分支机构有点受到污染。

我在默认分支中有公共变更集,应该在自定义分支中。我可以退出,但我需要向其他公共部门重新申请。我担心重新调整基数,因为这些都是公开的变化。

处理这种情况的最佳方法是什么?

编辑:我想我可能可以使用mercurial队列将变更集转换为补丁,但变更集是不可变的,因为它们是公共的。出于类似的原因,我也不能做hg脱衣舞。

在Mercurial中,您可以使用hg graft将变更集(有时也称为cherry-pick)从一个地方复制到另一个地方。它通常用于在错误分支上意外提交错误修复程序时,将错误修复程序备份到维护分支。

你这样使用它:

$ hg update correct-branch
$ hg graft your-commit

这将把your-commit重新创建为correct-branch的子级,类似于将your-commit导入MQ、弹出补丁、更新到correct-branch并推送补丁。graft的优点是它将在内部使用三方合并,从而为您提供更好的冲突解决方案。这与hg rebase的工作方式完全相同。

我想把torek的评论提升为一个完整的答案,让它更显眼。

正如他所指出的,当mercurial认为变更集已经公开时,hg phase命令(带有--force标志)可以修复这种情况。当然,你要确保你对它是否首先被分享是正确的。

我遇到了一个小故障,mercurial将一个未按下的分支标记为public,这使得使用qimport(或者本可以使用strip)很容易修复

相关内容

  • 没有找到相关文章

最新更新