【发布时间】:2013-01-04 15:19:23
【问题描述】:
我的repo目前如下:
O 7: default
|
O 6: default
|
| O 5: default
| |
| O 4: default
| |
| O 3: default
| /
O 2: default
|
O 1: default
我想把 6 和 7 搬到一个新的分支,我该怎么做?
【问题讨论】:
我的repo目前如下:
O 7: default
|
O 6: default
|
| O 5: default
| |
| O 4: default
| |
| O 3: default
| /
O 2: default
|
O 1: default
我想把 6 和 7 搬到一个新的分支,我该怎么做?
【问题讨论】:
您可以为此使用rebase extension。它需要启用,但该链接包含有关如何执行此操作的信息。
命令是:
hg update 2
hg branch newbranch
hg commit -m "Creating new branch"
hg rebase -s 6 -d 8
这将创建新分支,提交它(在您的示例中将创建修订版 8),然后将修订版 6 及其后代移动到新分支上。显然,您需要查找存储库的实际修订号。
您也可以使用 mq extension 来实现,但我认为在这种情况下 rebase 更容易使用。
【讨论】:
取决于您如何定义术语“分支”。如果您在谈论 named branches,那么 Steve Kaye 的回答很好。
如果您说的是 5 和 6 之类的分支位于图表中的一个分支上,那么您无需执行任何操作。 6 & 7 已经在他们自己的分支上。您可以不理会它们,然后回到修订版 2 继续工作。
hg update 2
<continue work>
hg commit -m "New Stuff"
这会给你留下这样的图表:
o 8: default
|
| O 7: default
| |
| O 6: default
| |
| | O 5: default
| | |
| | O 4: default
| | |
| | O 3: default
\ | /
O 2: default
|
O 1: default
如果您想为每个提示指定一个名称,请查看bookmarks。
hg bookmark -r 8 stable
hg bookmark -r 7 experimental-stuff
hg bookmark -r 5 some-feature
...然后您可以通过名称在它们之间进行更改。
【讨论】: