如何只推动汞的一个分支?

我有一个Hg回购,其中有3个分支,但其中两个是无效的(因为我已经将它们合并到我的默认分支)。 hg头显示3个头,每个分支一个,即使hg分支显示其中2个分支“不活跃”。

当我尝试将默认分支(使用hg push –branch默认http:// …推送到另一个repo时,合并中止并显示消息“abort:push创build新的远程分支:!

在Hg推送手册页中,“默认情况下,推送不允许在目的地创build新的头部,因为多个头部会使得不清楚要使用哪个头部,在这种情况下,推荐在推送之前拉和合并。

我已经这样做了,但我仍然不能推动 – 分支的默认没有被中止。

任何帮助表示赞赏。 谢谢!

如果default变更集有其他分支上的祖先变更集,你也必须推送这些变更集。 如果变更集不存在于回购库中,而且还不存在其所有变更集。

所以试试:

 hg push --branch default --new-branch 

其中说:“是的,我知道这推送发送远程回购以前从未见过的分支名称”(它也需要Mercurial 1.6或更高版本IIRC)>

而且,你可以把那些不活动的人头,并与他们闭头:

 hg update thebranch hg commit --close-branch -m 'closing' 

因为“命名的分支是永远的”,许多人select为长期存在的概念(如“稳定”和“实验”)预留它们,并使用书签,匿名分支或克隆function,发布和其他暂时的东西。 有关其他选项,请参阅此指南 。

推一个单一的分支,你只需使用-b

 hg push -b myBranch 

至于具体的问题,你可能想看看closures分行。 我知道SourceTree提供它,但我不确定具体情况

你可以强制它!

这里是如何:

 1. Pull from your repository 2. hg push --rev nnn -f (replace nnn with your Rev # of your working branch) 3. do NOT force before PULLing. if you do things will get out sync and you are screwed 

如果你正在使用RhodeCode之类的东西,那么在强制它之后检查一下,你会发现你的最新分支在那里。

不过,我认为稍后Mercurial会要求您再次推送另一个分支,即使您closures了它,Mercurial也会尝试在服务器上创build该分支。

我也是一个Git用户,并且遇到了同样的情况,因为客户正在使用Mercurial,但是我想使用Git工作stream风格。

我认为这是可行的,但我还没有弄清楚100%。