64

在 Mercurial 中,我该怎么做svn switch

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

4

5 回答 5

65
hg update -r<REV>

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

于 2009-07-20T21:51:58.897 回答
33

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

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

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

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

如果你想做后者,那么只需编辑.hg/hgrc. 您会找到[paths]如下所示的部分:

[路径]
默认 = http://example.net/something

您可以将此默认推/拉 URL 更改为您认为合适的其他内容。如果您经常需要从其他位置推/拉,您还可以在此部分添加其他条目。如果你想从一个位置拉,但推到另一个,然后添加一个default-push条目。

于 2009-07-22T09:07:34.117 回答
24

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

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

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

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

再次输入验证hg branch

于 2011-09-12T09:17:31.403 回答
1

要切换到远程分支“提示”:

hg pull -u <remote_branch>

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

hg update -r <local_branch>
于 2016-10-24T11:24:48.703 回答
0

替代答案,如果“分支”是指“位于网络上某个任意位置的回购的另一个克隆”:你不能。

换句话说,给定 hg.a.com 上的 repo,以及该 repo hg.b.com 的克隆,没有类似的命令

hg switch hg.b.com .

(使用 svn 的说法,假设您当前的目录是 hg.a.com 的克隆的根目录)。

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

于 2011-07-07T22:21:45.657 回答