Version control 在Mercurial中,是否有任何方法(除了“樱桃采摘”之外)可以推送变更集而不推送与不同头部相关的变更集?

Version control 在Mercurial中,是否有任何方法(除了“樱桃采摘”之外)可以推送变更集而不推送与不同头部相关的变更集?,version-control,mercurial,dvcs,Version Control,Mercurial,Dvcs,在对的回答中,声明“如果不按Changeset1,则无法按Changeset2” 如果存储库看起来像这样,这当然是有意义的: + Changeset2 | + Changeset1 | + Original 但是,在下面的场景中,这似乎没有多大意义,这就是我目前的情况: + Changeset2 | | + Changeset1 | / | / + Original 理想情况下,我希望能够将Changeset2推回到最初从中克隆的存储库中。Mercurial似乎不愿意让我这么做。它坚持

在对的回答中,声明“如果不按Changeset1,则无法按Changeset2”

如果存储库看起来像这样,这当然是有意义的:

+ Changeset2
|
+ Changeset1
|
+ Original
但是,在下面的场景中,这似乎没有多大意义,这就是我目前的情况:

+ Changeset2
|
|   + Changeset1
|  /
| /
+ Original
理想情况下,我希望能够将Changeset2推回到最初从中克隆的存储库中。Mercurial似乎不愿意让我这么做。它坚持我也推变更集1。。。这是不允许的,因为它会在原始存储库中创建新的头。显然,我可以“挑选”,或者创建一个补丁来应用于原始存储库,但这看起来很笨拙。我错过什么了吗


更新:我应该在最初的问题中提到,我试图从GUI执行操作。作为。在他的回答中正确地指出,Mercurial命令行允许我完成我所需要的,但是我仍然有兴趣了解是否有任何方法可以从GUI完成相同的操作。

如果您使用的是
hg push
,而没有任何命令行选项,它将尝试推送本地存储库中不存在于远程存储库中的每个变更集。如果您使用
-r
/
--rev
选项,它只会推送该版本及其祖先版本。在您的情况下,您需要执行以下操作:

hg push --rev Changeset2

有关详细信息,请参见hg帮助推送。

对于喜欢图片的用户界面爱好者:

  • 在TortoiseHg中,单击
    检测对
    按钮的传出更改。

  • 在要按下的修订上单击鼠标右键

  • 选择
    Push->Push to Here

  • 结果:您将只推送选定的修订,而不是推送所有内容。


    希望这能为您节省一些时间。

    太好了!我确信我一定错过了什么,就是这样。查看Steve Losh的
    hg-nudge
    命令()。这是同样的想法,但他有一些很好的解释和工作流程,你可以使用。是的,在这个问题上,历史是线性的,我的答案是具体的。Nall完全满足了您的以下需求。关于您的更新,在Ortoisehg中有一种方法可以做到这一点,但它不能真正被视为默认行为:您必须在每次推送时手动选择要推送的分支。看见