将变更集从“默认”分支移动到从其创建的另一个分支

时间:2015-10-16 05:58:37

标签: mercurial

在我的主仓库中(在服务器上),有一个通常的“默认”分支,以及一个名为“my-dev”的新分支。我将把更改推到“my-dev”分支。我想定期从“默认”分支中提取更改,以保持两个分支在默认情况下同步。我的初步步骤是:

hg clone default
hg update my-dev
// Make changes 
// Commit, push changesets into my-dev branch.

现在可以同步“默认”和“my-dev”。

  1. 将更改从repo中的“default”分支拉入本地工作区。 (它是“hg pull -b default”吗?)。
  2. 将新下拉的变更集从“默认”移至“my-dev”。
  3. 有人可以告诉我第1步和第2步的命令/选项。

    在git中,对于第2步,我会做一个“git rebase”。自“my-dev”创建以来“my-dev”中的所有新变更集都被撤消,变更集从“默认”分支引入(不发生冲突,不应发生冲突)。然后我的变更集逐一应用。发生任何冲突,我需要修复每一个。最重要的是,从“默认”引入的变更集保持不变(相同的散列,不会因合并冲突而需要修改)。但是,我可能需要更新我的变更集(这没关系),我将其推入“my-dev”。

    更新:完成my-dev分支中的功能(几个月后)后,我想将my-dev中的所有变更集移回默认值。

1 个答案:

答案 0 :(得分:1)

<强>前言

你越快忘记Git习惯和Git风格,就越容易理解HG风格:Mercurial和Git只分享常见的工具类别(DVCS)和一些非常一般的基础,但是:在许多概念上有所不同,(更糟糕的是)使用相同的术语不同的对象和操作(fe&#34; branch&#34;和&#34 ;重订&#34)

<强>脸部:

在Mercurial中,您有多种方法可以在DAG中的不同父节点之间传输变更集 as-is

,对于您的任务(&#34;定期将更改从BRANCH带到BRANCH&#34;),在Mercurial-world中我们最常使用旧的良好合并(更可重复,干净和简短DAG)as&#34;自然的方式&#34;

Branch Merges

(在这个真实世界的样本中,我使用Cleanup分支进行单独的任务/校对/并定期将优质文本带入WIP主线)

备注:

为了简单和安宁,我倾向于在推送之前拉my-dev(理论上,第三方变更集可能出现在共享分支中)。也许,拉动整个回购的懒惰方式也可以(有点分支,变化幅度小)