2016-03-03 55 views
0

当我尝试合并阶段我得到这些奇怪的嵌套冲突线。 当我尝试选择我想保留在vimdiff mergetool中的一个:diffg LO和:diffg RE时,它看起来有些奇怪的变化,我永远无法获得正确的合并分辨率。Git冲突行奇怪嵌套

截图来自Notepad ++比较插件。左侧为本地文件,右侧为远程文件。

冲突1:

标志着文件之间的不同

冲突2:

我的猜测是,合并标记造成与其他合并标记冲突,将合并它们周围的痕迹。当选择远程更改时,现在实际上是冲突的下一个合并标记将被解释为实际合并标记,但由于它们嵌套的方式,它不会拾取合并标记的正确开始或结束行。

我试着简单地删除所有合并的东西(合并标记及其出现的行,.orig.orig和_LO和_RE文件出现),并保留文件(真实文件和.orig文件)的方式我想要他们,但那对我不起作用。

您能否介绍一下这些冲突是如何工作的,我该如何看待这些冲突以及与他们打交道的方案有哪些?

另外,为了更好地理解合并,我想知道Git如何找到这些标记。从我所尝试的方式来看,我认为它会根据他们的位置记录来寻找他们,并且如果他们被完全从他们应该在的地方删除,会遇到问题?

+0

我还想问一些我的问题的答案,但如果有人遇到这个问题,我设法通过做“git rm path/to/file.phtml.orig path/to/other /file.phtml.orig“从git中删除这两个文件,然后我能够通过git commit完成合并。 –

回答

0

我对你为什么有“嵌套”冲突的猜测是因为你在其中一个想要合并的分支中留下了一个“挂起”(如“未解决”但已提交)的冲突,现在你正在尝试要再次合并,您将看到之前的冲突现在显示为另一合并的一部分。你能检查那些你正在合并的版本上的文件内容,并告诉我们是否确实如此?

+0

这看起来像一个评论而不是答案。 – soundslikeodd