【问题标题】:Move changesets from "default" branch to another branch created from it将变更集从“默认”分支移动到从它创建的另一个分支
【发布时间】:2015-10-16 05:58:37
【问题描述】:

在我的主存储库(在服务器上)中,有一个通常的“默认”分支,并从它创建了一个名为“my-dev”的新分支。我会将更改推送到“my-dev”分支。我想定期从“默认”分支中提取更改,以使两个分支相对于默认值保持同步。我最初的步骤是:

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

现在是时候同步“default”和“my-dev”了。

  1. 将更改从 repo 中的“默认”分支拉入本地工作区。 (是“hg pull -b default”吗?)。
  2. 将新下拉的变更集从“default”移至“my-dev”。

有人可以向我推荐第 1 步和第 2 步的命令/选项吗?

在 git 中,对于第 2 步,我会执行“git rebase”。自创建“my-dev”以来,“my-dev”中的所有新变更集都已撤消,变更集从“默认”分支引入(没有发生冲突,也不应该发生)。然后我的变更集被一一应用回来。发生的任何冲突,我都需要修复每一个。最重要的是,从“默认”引入的变更集保持不变(相同的哈希,由于合并冲突而无需修改)。但是,我可能需要更新我推送到“my-dev”中的变更集(没关系)。

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

【问题讨论】:

标签: mercurial


【解决方案1】:

前言:

你越快忘记 Git 习惯和 Git 风格,就越容易理解 HG 风格:Mercurial 和 Git 只共享通用的工具类别 (DVCS) 和一些非常通用的基础, 但是:在许多概念上有所不同,并且(更糟糕的是)使用相同的术语来表示不同的对象和操作(例如“分支”和“变基”)

脸:

在 Mercurial 中,您可以通过多种方式在 DAG 中的不同父节点之间按原样传输变更集:

但是,对于您的任务(“定期将更改从 BRANCH 带到 BRANCH”),在 Mercurial-world 中,我们最常使用 old good merge(更可重复、更干净和更短的 DAG)作为“自然方式”

(在这个真实世界的示例中,我使用Cleanup 分支来执行单独的任务/校对/并定期将经过修饰的文本带入 WIP 主线)

注意事项:

为了简单和宁静,我更喜欢在推送之前拉 my-dev(理论上,3 方变更集可能会出现在共享分支中)。也许,拉整个 repo 的懒惰方式也可以(有点分支,变化强度小)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 2011-05-06
    • 2021-01-07
    • 2015-08-08
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多