代码之家  ›  专栏  ›  技术社区  ›  Joymaker

反复无常,简化了多头怪物

  •  0
  • Joymaker  · 技术社区  · 6 年前

    我与一位同事共享一个在线Mercurial存储库。遇到了一个复杂的情况:

    在A台上,搞得一团糟,不得不备份一些修改。创建了一个克隆,在那里添加了新代码,并手动将更改合并到该克隆中。

    1. 推送将创建一个新的远程磁头。在这方面花了足够多的时间后,我选择了push-f。它成功了。但我真的宁愿让它相信,这是已经存在的头的真实和合法的延续。但不是真正的合并,而是用我的新代码文件集完全替换。怎样

    更多信息:

    站A视图: Station A view 拉车后的B站视图: enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   Craig    6 年前

    我看到了一些问题:

    1) 您试图使用克隆来消除该问题。一旦您熟悉Mercurial,您会发现有更好的方法来解决您描述的问题类型。

    您的描述不清楚您对克隆采取了哪些步骤。例如,您是使用错误代码从主远程回购还是从本地回购进行克隆。

    下面,我假设您将多个头推到远程回购。

    根据你的描述,听起来你有类似的东西:

    hg log -G
    
    @  changeset:   4:fa78b78c5094
    |  tag:         tip
    |  user:        Craig
    |  date:        Sun Oct 21 10:38:15 2018 -0600
    |  summary:     Good commit 2
    |
    o  changeset:   3:af5cfaf651ff
    |  parent:      0:f46808ac779b
    |  user:        Craig
    |  date:        Sun Oct 21 10:38:02 2018 -0600
    |  summary:     Good commit 1
    |
    | o  changeset:   2:aabb053f11a9
    | |  user:        Craig
    | |  date:        Sun Oct 21 10:37:44 2018 -0600
    | |  summary:     Bad commit 2
    | |
    | o  changeset:   1:9168cd930d40
    |/   user:        Craig
    |    date:        Sun Oct 21 10:37:32 2018 -0600
    |    summary:     Bad commit 1
    |
    o  changeset:   0:f46808ac779b
       user:        Craig
       date:        Sun Oct 21 10:18:32 2018 -0600
       summary:     Commit some work
    

    hg update 4
    
    hg merge 2
    

    注意:如果只有两个磁头,则不带数字的hg merge将起作用。

    您可能需要解决合并冲突。

    合并完成后,它将带着修改过的文件(合并结果)离开存储库。确保这些修改仅包含您想要的更改。

    一旦您完全确定更改(作为合并的结果)是您想要的,您就可以提交合并:

    hg merge -m "Merge heads"
    

    此时,您应该只有一个头部,如下所示:

    @    changeset:   5:8f9e6a947b3a
    |\   tag:         tip
    | |  parent:      4:fa78b78c5094
    | |  parent:      2:aabb053f11a9
    | |  user:        Craig
    | |  date:        Sun Oct 21 11:14:43 2018 -0600
    | |  summary:     Merge heads
    | |
    | o  changeset:   4:fa78b78c5094
    | |  user:        Craig
    | |  date:        Sun Oct 21 10:38:15 2018 -0600
    | |  summary:     Good commit 2
    | |
    | o  changeset:   3:af5cfaf651ff
    | |  parent:      0:f46808ac779b
    | |  user:        Craig
    | |  date:        Sun Oct 21 10:38:02 2018 -0600
    | |  summary:     Good commit 1
    | |
    o |  changeset:   2:aabb053f11a9
    | |  user:        Craig
    | |  date:        Sun Oct 21 10:37:44 2018 -0600
    | |  summary:     Bad commit 2
    | |
    o |  changeset:   1:9168cd930d40
    |/   user:        Craig
    |    date:        Sun Oct 21 10:37:32 2018 -0600
    |    summary:     Bad commit 1
    |
    o  changeset:   0:f46808ac779b
       user:        Craig
       date:        Sun Oct 21 10:18:32 2018 -0600
       summary:     Commit some work
    

    在将合并的代码推送到远程存储库之前,验证更改是否正确并经过测试是非常重要的。推动错误的合并只会加剧问题。

    推荐文章