【问题标题】:Remove merger of history in mercurial删除mercurial中的历史合并
【发布时间】:2013-10-25 12:26:26
【问题描述】:

我有这样的提交历史:

[A] - [B] - [D] - [F] - [H] - [I]
        \     \        /
        [C] - [E] - [G]

我如何获得以下故事:

[A] - [B] - [D] - [F] - [H] - [I]
        \              /
        [C] ------- [G']

其中 [E] - 是一个合并提交。

【问题讨论】:

  • 请问您为什么需要删除它?这也会影响[E] 的每个后代(例如[H] -> [H'][I] -> [I'])。
  • 我只是想离开这个分支已经在这个分支中完成的工作。实际上,[H'] 中的合并会有所不同,但存储库的状态将与[H] 中的完全相同。所以[I] 不会改变。
  • [I] 可能功能上[I'] 相同,但 hg 用来识别它的哈希值会有所不同,因此对 hg 而言,它是一个 100% 的新变更集.您在本地对历史记录所做的任何修改都需要在具有该历史版本的每个 存储库上重做。这就是为什么历史通常被认为是不可变的并且不鼓励对其进行修改。

标签: mercurial rebase mercurial-extension


【解决方案1】:

在您的插图中,E 和 H 都是合并提交。如果您只想显示 A、B、C、D、F、G、I,那么您会这样做:

hg log --no-merges

如果您的意思是实际修改历史记录,那么这几乎肯定是一个错误。在您的第二幅图中,G' 包含由 D 表示的“工作”,但没有 D 作为祖先,这意味着当您将其合并回来时,合并将使用错误的最近共同祖先(真的D 但它会与 A) 一起启动并变成毛球。

【讨论】:

    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 2011-03-02
    • 2012-04-23
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多