1

试图弄清楚在 Gitlab 中合并合并请求后 file1.cpp 的外观。我(dev1)正在开发分支并更改了 file1.cpp 的第 2 行,提交并提出了合并请求。现在,我等了 1 天才合并。到另一个开发人员(dev2)更改 file1.cpp 的第 4 行时,提交并合并到 master 中。现在,如果与 master 中的 file1.cpp 相比,我的 file1.cpp 中的第 4 行是不同的。所以如果我现在合并我的请求,那么 file1.cpp 的最终版本会是什么样子?

1) file1.cpp:  
line 2 by dev1 
... 
line 4 by dev2

2) file1.cpp: 
line 2 by dev1
...
line 4 by dev1

我的疑问是我 will change 中的第 4 行是否会出现在最终文件中,或者 dev2 中的第 4 行最终会出现。如果 dev2 的第 4 行最终会出现,那为什么会这样呢?因为我的更改是在 dev2 的更改之后进行的。

4

1 回答 1

2

git不会默默地丢弃你同事的改变,也不会默默地丢弃你自己的改变。

它会:

  • 找到一种方法来结合你的改变,
  • 或触发所谓的合并冲突,并要求某人采取手动操作来确定最终结果应该是什么。

如果发生合并冲突,一般手动操作是:

  • 获取您机器上的所有更改,
  • 在更新后的主分支之上重新调整您的工作,
  • 在本地修复合并冲突,
  • 推送您更新的分支。

请注意,“更改自动合并git”并不能保证您的代码可以正常工作

两个例子:

假设您的更改是:将函数重命名computeThiscomputeThat
而 dev2 的更改是:调用函数computeThis
您的组合更改将导致无法编译的内容。

假设您的更改是:添加一条x -= 1指令,
而 dev2 的更改是:添加一条指令double d = 1 / x
并且由于某种原因,在您更改之前,代码明确指出x > 0在该函数中,
结果将编译,但当x == 1.

只是为了强调:

最终结果仍应进行测试和审查。

于 2020-06-09T08:26:22.223 回答