【发布时间】:2019-12-16 18:45:26
【问题描述】:
我有一个 master 分支和另外两个分支,“dev1”和“dev2”都是从 master 创建的。但是如果 person1 修改了一行并推送到 dev1 中,然后创建一个合并请求到 master 分支,它不会显示合并冲突,只是显示一行被更改为新值。然后如果还没有执行 git pull 的 person2 执行 git push 到 dev2 分支,然后创建一个合并请求到 master,则由 person1 修改的行将再次修改为 person2 仍然拥有的旧值他们的存储库。
但是,如果我创建从 dev2 到 dev1 的合并请求,那么它将显示更改的值的合并冲突。我很困惑为什么它只在我尝试合并这两个时才显示,而不是在我尝试合并到 master 分支时显示。
谁能解释我做错了什么以及合并的正确方法是什么?谢谢。
【问题讨论】:
-
在第一种情况下,合并结果(master)对 one 源(dev2)的文件有两个更改,但在第二种情况下,合并结果(dev1 ) 从 两个 源(dev2 和 dev1)有两个变化 - 因此冲突
-
如果两个开发人员都修改了同一行,当您在合并 dev1 后尝试将 dev2 合并到 master 时,它应该会中断...除非(在 master 上)您将该行恢复到之前的状态在合并 dev1 之后在 master 上合并 dev1。
-
如果 master 是 dev2 之前的一个提交,那么如果 dev1 和 dev2 在同一行发生了变化,那么没有 pull 的合并将导致冲突。
-
这是通常期望 you 在创建 PR 或推送之前将您的分支重新定位到当前
master的原因之一,但是该过程在您的项目。这样一来,任何潜在冲突方面的两位最佳知识专家中的一位(另一位是另一个分支的作者)负责以有意义的方式解决冲突。 -
@twalberg 换句话说,在 dev1 分支合并到 master 之后,dev2 将不得不更新他们的分支?