如何只推动汞的一个分支?
我有一个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%。