如何使用Mercurial“切换”

时间:2009-07-20 21:48:47

标签: svn version-control mercurial dvcs

如何在Mercurial中执行svn switch所做的事情?

那是改变我的工作目录切换到存储库中的另一个分支吗?

5 个答案:

答案 0 :(得分:61)

hg update -r<REV>

update命令将切换到指定的修订版。

答案 1 :(得分:33)

switch命令在Subversion中做了两件事:

  
      
  1. 更新工作副本以镜像存储库中的新URL。   此行为类似于“svn update”,并且是通往的方式   将工作副本移动到同一存储库中的分支或标记。

  2.   
  3. 重写工作副本网址元数据以仅反映语法更改。   当存储库的根URL更改时(例如方案),将使用此方法   或主机名更改)但您的工作副本仍然反映相同   同一存储库中的目录。

  4.   

如果您在Subversion中从hg update foo切换到/trunk/branches/foo命令与前者最匹配。

如果你想做后者,那么只需编辑.hg/hgrc即可。你会发现[paths]部分看起来像这样:

[paths]
default = http://example.net/something

您可以根据需要将此默认推/拉网址更改为其他内容。如果您经常需要从其他位置推/拉,也可以在此部分添加其他条目。如果您想从一个位置拉出,而是推送到另一个位置,则添加default-push条目。

答案 2 :(得分:23)

我想切换分支,请执行以下操作:

首先检查可用的分支,键入hg branches。这将列出所有可用的分支。

接下来确定您当前正在处理哪个分支,键入hg branch。这将告诉您当前的分支是什么。

最后要切换分支(并擦除所有本地更改),请键入hg update -C name-of-branch。这将切换到您指定的分支名称。

再次输入hg branch进行验证。

答案 3 :(得分:1)

切换到远程分支'tip':

hg pull -u <remote_branch>

对于本地分支(已经是最新的):

hg update -r <local_branch>

答案 4 :(得分:0)

备选答案,如果是“分支”,则表示“生活在网络上任意位置的另一个回购克隆”:你不能。

换句话说,鉴于hg.a.com的回购,以及该回购hg.b.com的克隆,没有像

这样的命令
hg switch hg.b.com .

(在那里使用svn用语,假设您当前的目录是hg.a.com克隆的根目录。)

但是,您可以克隆hg.a.com,本地克隆该克隆(应该相对便宜),然后从hg.b.com中取出可能存在的任何其他更改。