【问题标题】:hg: Change root of named branchhg:更改命名分支的根
【发布时间】:2014-05-02 03:42:58
【问题描述】:

我在我们的存储库中为一项功能创建了一个命名分支 - 然而,根据我的更好判断,我从我们的头部修订分支而不是之前的版本(我在其中分支了多个功能分支)。

我已经对该分支进行了一些提交 - 它们只是本地的,尚未推送 - 但我想将分支根移动到我的默认分支上的较早版本。我不想对我的提交进行任何更改(因为不会有任何冲突);如果可能的话,我基本上只是想更改分支来自的父版本。

如何在 Mercurial 中轻松做到这一点?

【问题讨论】:

    标签: version-control mercurial branch tortoisehg


    【解决方案1】:

    只想更改分支来自的父版本

    只需变基:hg rebase -s MOVED_ROOT -d NEW_PARENT_OF_MOVED_ROOT --keepbranches

    【讨论】:

    • 据我所知,使用 rebase 您需要重新合并所有更改。
    • @black_wizard - “视情况而定” (c)。后台使用 rebase 嫁接
    • 您可能还希望在rebase 命令中包含--keepbranches
    【解决方案2】:

    嗯,这比调用一个命令要复杂一些,但你可以做到:

    1. 将您的分支变更集导出到补丁文件中
    2. 剥离分支变更集
    3. 更新到早期版本并创建新分支
    4. 从补丁文件导入变更集

    这里是示例命令列表:

    hg init
    echo "Hello" > readme.txt
    hg addremove
    hg commit -m "Hello added"
    echo "Hello2" >> readme.txt
    hg commit -m "Hello2 added"
    hg branch feature
    echo "Feature added" >> readme.txt
    hg commit -m "Feature added"
    echo "Feature2 added" >> readme.txt
    hg commit -m "Feature2 added"
    hg export -o patch 2:3
    hg strip 2:3
    hg up 0
    hg branch feature
    hg import patch
    

    附:对于 strip 命令,您需要启用 mq 扩展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多