解决与VS2019 + KDiff3的冲突时,Git标记开始显示

问题描述

今天,我试图合并两个分支,但发生冲突。我使用Visual Studio 2019团队资源管理器,并且像这样设置.gitconfig来启动KDiff3:

[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    path = C:/Program Files/KDiff3/bin/kdiff3.exe
    trustExitCode = false

到目前为止,它一直很好用,但是今天,该文件的基本版本中有Git的冲突标记。像这样:

Common code
<<<<<<<<< Temporary merge branch 1
One version of code
=========
Another version of code
>>>>>>>>> Temporary merge branch 2
More common code

这从未发生过。这些标记不是仅用于使用文本文件手动合并吗?关于如何解决此问题的任何想法?

编辑:

另外,直接从命令行使用git具有相同的标记,但是我不知道这些标记是否存在,因为我几乎从不使用命令行。这是我使用的命令:

git mergetool -g FileName.cs

解决方法

只要存在合并冲突,Git就会添加这些标记。 Git的一种方法是使冲突的位置易于发现(通过人工或合并工具)并显示替代版本。

合并工具可以检测这些标记,并使用户更容易比较版本并选择他们喜欢的版本。 GUI工具(例如KDiff3)通常会隐藏标记,并在不同的窗格中显示替代版本。用户解决了冲突后,合并工具将删除带有标记的行。

其他工具可以轻松地从冲突跳到冲突,以不同的颜色突出显示替代版本,并具有可轻松解决冲突的键绑定,但它们不会向用户隐藏这些Git冲突标记(例如ediff)。

无论如何,无论您是否看到它们(取决于您使用的合并工具),它们都会一直存在,直到解决冲突为止。

我不知道这次用KDiff3出了什么问题,但是手动修复很容易:

您可以使用任何文本编辑器简单地打开文件,删除行

<<<<<<<<< Temporary merge branch 1
=========
>>>>>>>>> Temporary merge branch 2

,然后选择One version of codeAnother version of code或两者的组合(或完全其他)。

完成后,保存文件,运行:

git add <file>

(这告诉Git您已经解决了冲突),然后:

git commit

您不必输入提交消息,因为Git会自动为您提供合并提交消息(您可以接受或修改)。

等等。

,

结果证明,在正常冲突中不会发生这种情况,这只是一个复杂的合并树的情况。对于与明显的单个共同祖先的正常合并冲突,git生成了三个简单文件供合并工具查看。当您有多个冲突的共同祖先时,它会在“基本”文件中保留一些标记。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...