解决与不一致的本地代码的Git合并冲突

时间:2018-02-01 17:10:16

标签: git visual-studio merge visual-studio-2017 merge-conflict-resolution

我对解决合并冲突感到困惑。似乎我的本地代码反映了我所做的更改以及在我实际合并之前我的同事所做的所有更改。

下面的非常小的图片只是演示了冲突解决工具的环境:

  • LHS:来源: src /.../ AdminController.cs;远程
  • RHS:目标: src /.../ AdminController.cs;本地

enter image description here [图1]

示例1

在我解决冲突并合并之前,这是我的本地代码:

enter image description here

[图2]

以下是冲突解决工具的摘录:

enter image description here [图3]

这是有道理的。我删除了Braintree using声明,因此更改会按预期反映在右侧。

示例2

在我解决冲突并合并之前,这是我的本地代码:

enter image description here [图4]

以下是冲突解决工具的摘录:

enter image description here [图5]

这对我没有意义。我在第775行的图4中的本地代码读取var currentUserLicenses但在冲突解决工具中,如图5所示,它显示了我的本地代码(在右)是vm.HasCurrentLicense,而远程代码(左侧)是var currentUserLicenses

我误解了什么?为什么在图2和图3中,我的本地代码是相同的,但在图4和图5中,我的本地代码不是?

1 个答案:

答案 0 :(得分:1)

混淆开始于在合并之前发生冲突解决的想法"。在应用了所有非冲突的更改之后,它实际上作为合并的最后一步发生。

所以"目标"合并工具中的窗口显示您的本地版本"从合并之前。它向您展示了暂定的合并结果 - "我做到了这一点,但最后几个变化重叠,所以你需要澄清结果"。

就我个人而言,我不喜欢我使用过的任何基于GUI的合并工具,因为他们很难清楚地告诉我,你改变了这个,他们改变了这个,暂时的结果这是"。使用gits默认合并驱动程序的文本标记放入发生冲突的文件中,我能够非常快速地推断出我需要知道的关于四个相关版本(基础,他们,我们的,暂定合并)的内容。现在这对我有用了;什么工具以您理解的方式为您提供信息供您确定。但是我真的会鼓励你去了解如何看到超过"来源"和" target",因为当你获得两个带有这些名字的观点时,我觉得信息被遗漏了。