如何使用Mercurial"切换"

Jon*_*yer 62 svn version-control mercurial dvcs

我如何svn switch在Mercurial中做什么?

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

Fla*_*tef 64

hg update -r<REV>
Run Code Online (Sandbox Code Playgroud)

更新命令将切换到指定的修订.

  • 请注意:如果使用命名(内部)分支,则可以使用-r切换到分支名称:'hg update -r <branch>' (20认同)
  • 我认为这需要是hg update -C <branch>,而不是-r.正如@Danmar在他的回答中所说,hg branches和hg branch命令也很有用. (3认同)

Mar*_*ler 33

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

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

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

hg update foo命令前,如果你从,比如开关,匹配最密切/trunk/branches/fooSubversion中.

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

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

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


小智 23

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

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

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

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

通过hg branch再次输入验证.

  • 请注意,即使您排除了-C clean选项,执行此操作时也会删除任何本地未提交的更改.如果你想保留未提交的更改,请先搁置它们:o) (2认同)