更改后Git不会检测到文件冲突

时间:2018-09-20 12:43:33

标签: git

我从远程分支中拉出,其中有一个包含以下代码行的文件:

$productAttributes = $product->ctAttributes;

在我的本地文件中,同一行代码如下:

$productAttributes = $product->getAttributesAsString();

我所做的只是pull --rebase origin devpull合并了此更改,但未检测到本地文件与远程文件之间的冲突。它只是选择了远程的。为什么会这样呢?这条路 (不显示冲突)有时我们会丢失很多代码。我哪里不好?

1 个答案:

答案 0 :(得分:2)

冲突并不意味着两行代码不匹配。冲突意味着两个更改不兼容。


假设origin/master中包含以下代码:

var testValue = "A";

pull向下复制到本地master的最新副本,并且都显示此行。

如果同事进行了以下更改并将其push更改为origin/master

var testValue = "B";

现在我的本地副本不一样了,我们所处的情况与您描述的相同。


如果我pull最新的代码,它将自动更新而不会发生任何冲突。为什么?

Git尝试应用更改var testValue = "A";-> var testValue = "B";。在我本地分支的当前状态下,此更改仍然有意义,因此可以应用。


假设我在pull使用最新代码之前进行了更改:

var testValue = "C";

现在,当我pull最新代码时,Git尝试应用更改var testValue = "A";-> var testValue = "B";-但这不再有意义,因为我的本地代码不是{{1} } =冲突


还有很多,但我认为可以概括为:

  

Git尝试将更改从特定的起始状态应用于   特定的结束状态-如果当前状态会发生冲突   与指定的起始状态不匹配,否则更改将   被应用