【问题标题】:How do I create a criss-cross merge in Git?如何在 Git 中创建交叉合并?
【发布时间】:2013-06-17 17:38:42
【问题描述】:

我必须测试一个错误修复,我需要在两个分支之间创建一个纵横交错的合并。没有太多文档,而且我对 Git 还很陌生。我不是提交代码,只是测试我们的代码审查系统的功能。

我用来进行更改的单个文件是一个简单的自述文本文件。

【问题讨论】:

  • 您能否更具体地说明“交叉合并”的含义。也许一个例子会有所帮助。对于在提交之间梳理错误,我发现git-bisect 可能很有帮助
  • 如果通过交叉合并,你的意思是将一个分支合并到另一个分支,那么这很容易:git checkout branch1, git merge --no-ff branch2
  • 我在this answer 中编写了一个用于创建交叉合并的最小工作示例。

标签: git merge branch git-merge


【解决方案1】:

你说的是这个场景:http://www.gelato.unsw.edu.au/archives/git/0504/2279.html

我也试图重现那里发生的事情,但 git 不会因错误而失败,我认为它会切换到最大化冲突的 resolve 策略,至少这是 git(vers 1.8.3.rc1) 给我的当我复制它时解决。

【讨论】:

    【解决方案2】:

    当历史涉及交叉合并时,两次提交可能有多个最佳共同祖先。例如,使用这种拓扑:

    ---1---o---A
        \ /
         X
        / \
    ---2---o---o---B
    

    以上来自git website,估计忘记加箭头了。

    让我们看看下面的图片,如何做出纵横交错的情况就很明显了。当分支 A 需要来自分支 B 的一些代码时,它会从分支 B 合并;当分支 B 需要来自分支 A 的一些代码时,它会从分支 A 合并;在这里,我们遇到了纵横交错的情况。

    更重要的是,很容易找出分支 A 和分支 B 共享祖先 1 和 2。

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2011-08-11
      • 2016-10-10
      • 2011-01-18
      • 2016-12-14
      相关资源
      最近更新 更多