我已经尝试找到我想要分支的提交但我无法看到任何创建分支的选项。
我也尝试过创建一个分支,但是我看不到任何选择旧提交的方法。
有关答案 0 :(得分:0)
使用hg update -r <rev>
检查您想要成为新分支的父级的修订。然后,在下一个hg commit
之前的任何时间,使用hg branch <new-branch-name>
记录您要创建的分支的名称。进行您想要的任何更改,然后运行hg commit
以创建一个创建分支的新提交。新提交将是新分支中的唯一提交,并且将成为该分支的头部(单数)。
(注意:我只能回答有关命令行选项的问题,因为我没有使用花哨的GUI。)
在Mercurial中,您可以通过以下方式创建分支:
将hg branch
与分支名称一起使用:
hg branch newbranch
Mercurial将回复:
marked working directory as branch newbranch
(branches are permanent and global, did you want a bookmark?)
(如果已经有default
以外的分支,则省略第二句。
进行新的提交。
在执行第2步之前,您所做的分支是&#34; hg branch
不存在:它只是分支的想法。这个想法与工作树的状态一起保存。
请注意,无论何时创建新提交,新提交都有父提交(或者在结束合并时偶尔会有两个父提交)。新提交的父级的ID是当前提交的ID,即修订版.
。这就是您必须首先更新到所需修订版的原因。
工作树实际上是提议的提交。但是,除非您使其与当前提交不同,否则不会提交更改集。 (如果您熟悉Git,这与其内部结构类似,但存在一些关键差异。在Git中,当前修订版名为HEAD
而不是.
,而不是工作树作为提议的提交,Git使用它的&#34;索引&#34;作为提议的提交。更重要的是,在Git中,提交同时在一些不同的分支上,所以除了两个特殊情况,Git创建分支名称这是因为新的分支和旧分支共享所有旧分支的提交 - 一种特殊的疯狂,尽管最终都会解决这个问题。 )
这显示在hg summary
的输出中,其中描述了:
.
的修订ID; .
相比的工作树状态; .
的分支)的当前头部距离.
; Mercurial中的 head 是在同一分支中没有后代提交的任何提交。更新到本身不是头部的旧版本,然后创建新的提交,将自动创建一个新头,将头数增加一。如果新头部在现有分支中,则现有分支的头部数量同样增加一个。如果新头部导致创建新分支,则新分支现在会存在并且有一个提交,这是一个头部提交。
要创建一个新的命名分支,最后一个就是你想要的。因此,您需要更新到起始修订版 - 如果您愿意,这可以是现有的分支头 - 然后切换到新分支,但实际上还不存在。然后,您可以进行提交以创建分支,其单个修订版是新分支的头部。 (如果之前的提交是旧分支的一个或者,那么它仍然是一个头。)