今天我试图合并两个分支,但遇到了冲突。我使用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的一种方法,可以使冲突的位置易于发现(通过人工或合并工具(,并显示替代版本。
合并工具可以检测这些标记,让用户更容易地比较版本并选择他们喜欢的版本。像KDiff3这样的GUI工具通常隐藏标记,并在不同的窗格中显示替代版本。一旦用户解决了冲突,合并工具就会删除带有标记的行。
其他工具允许轻松地从一个冲突跳到另一个冲突,用不同的颜色突出显示备选版本,并具有密钥绑定以轻松解决冲突,但它们不会向用户隐藏那些Git冲突标记(例如,depff(。
无论如何,无论你是否看到它们(取决于你使用的合并工具(,它们都会一直存在,直到冲突得到解决。
我不知道这次KDiff3出了什么问题,但手动修复很容易:
你可以简单地用任何文本编辑器打开文件,删除行
<<<<<<<<< Temporary merge branch 1
=========
>>>>>>>>> Temporary merge branch 2
并选择One version of code
、Another version of code
或两者的组合(或完全选择其他内容(。
完成后,保存文件,运行:
git add <file>
(这条消息告诉Git你已经解决了冲突(,然后:
git commit
你不必输入提交消息,因为Git会自动为你提供合并提交消息(你可以接受或修改(。
等等。
事实证明,这在正常冲突中不会发生,这只是一个复杂的合并树的情况。对于具有明显单个共同祖先的正常合并冲突,git会生成三个简单的文件供合并工具查看。当冲突有多个共同祖先时,它会在"基本";文件