【问题标题】:Pulling and force commit set of changes拉取并强制提交更改集
【发布时间】:2014-06-13 14:27:08
【问题描述】:

我有以下情况:

存储库 A: 1a -> 2a -> 3a -> 4a -> 5a

存储库 B: 1b -> 2b-> 3b -> 4b

在存储库 B 中,第一次提交是存储库 A 的修订版 3a 加上一些更改的快照。

我真的很想在 A 中合并 repo B,保留历史和关系,因为即使它们是两个独立的存储库,实际上它们是相关的。因为 B 从版本 3a 的 repo A 开始 我需要的是在分支中将变更集从 B 拉到 A:

1a -> 2a -> 3a -> 4a -> 5a

         |
         |

         1b -> 2b -> 3b -> 4b

我可以安全地覆盖 3a' 分支中的所有内容,因为 1b 是对 3a' 的修改。 但是,当我使用 force 参数拉动时,它会一直拉动为一个不相关的变更集,从而创建一个新的原点。 我如何告诉 mercurial 我想从 B 中提取变更集,就好像我要提交它们一样?所以我可以保持这种关系。

我尝试了补丁队列,但是当我尝试应用它们时它会拒绝所有内容。

非常感谢。

【问题讨论】:

  • 补丁队列是我处理它的方式。如果3a3a' 真的是同一个状态,我希望补丁队列能够工作。注意需要更新到3a再申请1b
  • @Edward 抱歉,我更新了删除 3a' 的问题,因为 B 的第一个提交是 1b,即 3a 加上一些更改,我会再试一次补丁队列。也许我必须在更新为 3a 的新分支中手动提交 1b,然后我可以修补队列其余的更改(2b、3b、4b)?

标签: version-control merge mercurial tortoisehg


【解决方案1】:

我认为补丁未按预期工作的原因是变更集 3a1b 之间存在差异。在了解(我希望!)您的更新之后,我将继续这样做。

  1. 更新到主存储库中的3a
  2. 文件将 1b 的状态复制到它上面并提交(作为3a1?)
  3. 将第二个 repo 中的更改导出为一系列补丁。
  4. 将一系列补丁一次一个地导入到 ne 分支。
  5. 将更改合并到提示中。

(我认为这与您在评论中提到的“手动提交b1”很接近,但我想我会对此进行一些扩展。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多