在我的主仓库中(在服务器上),有一个通常的“默认”分支,以及一个名为“my-dev”的新分支。我将把更改推到“my-dev”分支。我想定期从“默认”分支中提取更改,以保持两个分支在默认情况下同步。我的初步步骤是:
hg clone default
hg update my-dev
// Make changes
// Commit, push changesets into my-dev branch.
现在可以同步“默认”和“my-dev”。
有人可以告诉我第1步和第2步的命令/选项。
在git中,对于第2步,我会做一个“git rebase”。自“my-dev”创建以来“my-dev”中的所有新变更集都被撤消,变更集从“默认”分支引入(不发生冲突,不应发生冲突)。然后我的变更集逐一应用。发生任何冲突,我需要修复每一个。最重要的是,从“默认”引入的变更集保持不变(相同的散列,不会因合并冲突而需要修改)。但是,我可能需要更新我的变更集(这没关系),我将其推入“my-dev”。
更新:完成my-dev分支中的功能(几个月后)后,我想将my-dev中的所有变更集移回默认值。
答案 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;
(在这个真实世界的样本中,我使用Cleanup
分支进行单独的任务/校对/并定期将优质文本带入WIP主线)
备注:强>
为了简单和安宁,我倾向于在推送之前拉my-dev
(理论上,第三方变更集可能出现在共享分支中)。也许,拉动整个回购的懒惰方式也可以(有点分支,变化幅度小)