【问题标题】:move some commits to a new branch in Hg将一些提交移至 Hg 中的新分支
【发布时间】: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 搬到一个新的分支,我该怎么做?

【问题讨论】:

    标签: mercurial branch


    【解决方案1】:

    您可以为此使用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 更容易使用。

    【讨论】:

      【解决方案2】:

      取决于您如何定义术语“分支”。如果您在谈论 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
      

      ...然后您可以通过名称在它们之间进行更改。

      【讨论】:

        猜你喜欢
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 2021-09-09
        • 2014-11-19
        • 2016-11-13
        • 2020-09-20
        相关资源
        最近更新 更多