代码之家  ›  专栏  ›  技术社区  ›  Deep Thought

Pro Git中关于虚假合并的令人困惑的段落

git
  •  0
  • Deep Thought  · 技术社区  · 4 年前

    Pro Git, 2nd Edition 第289页解释了虚假合并的用例:

    这通常有助于在以后进行合并时欺骗Git,使其认为分支已经合并。例如,假设你分支了一个 release 分支,并已对其进行了一些工作,您希望将其合并回您的 master 分支在某个时候。与此同时,一些bug修复 主人 需要背到你的 释放 支。您可以将bugfix分支合并到 释放 分支和 merge -s ours 同一个分支进入你的 主人 分支(即使修复程序已经存在),因此稍后合并时 释放 再次分支,没有来自错误修复的冲突。

    这段话对我来说毫无意义。(记住,我从来没有把GitIm读这本书作为第一次介绍。)

    首先,它谈论的是将bugfix合并到 释放 分支和 主人 分支,但它说bug修复已打开 主人 我认为这意味着它是直接提交给 主人 。对于是否有单独的bug修复分支,这似乎是自相矛盾的。

    也许吧 主人 这里的意思是它已经被合并到 主人 ,但这似乎意味着我们试图伪造并将同一个bug修复分支合并到 主人 我们之前实际上已经合并了。这似乎得到了修复已经存在的断言的强化。但是,将同一分支不变地合并到 主人 两次?为什么第一次不足以解决所谓的问题?

    此外,无论bug修复是如何进入的 主人 , 为什么合并时会产生冲突 释放 ? 修复应该是合并两侧的相同代码行,所以直观地说,我希望这次合并在这里不会发生冲突,也不会诉诸任何诡计。

    我几乎想知道这本书是不是想说 释放 将被背进 主人 .我读这句话的意思是错误修复是精心挑选的 主人 。即使在这种情况下,我仍然不明白为什么需要虚假合并,因为同样,错误修复行应该在最终合并的两侧匹配 释放 进入之内 主人 ,所以不应该产生冲突。

    最后,无论如何,我甚至不清楚虚假合并将如何解决合并冲突。据我所知,虚假合并既不会改变最终问题合并的共同祖先,也不会改变其两侧的内容,因此根本不应该改变其结果。

    有人能更清楚地解释一下,也许用图表,这本书在这里想表达什么吗?或者,如果我误解了什么,请指出那是什么?

    0 回复  |  直到 4 年前