1

我有几十个文件,Git 添加了合并冲突标记,但 Git 不承认存在合并冲突,也不会打开合并工具:

 1 <<<<<<< HEAD                                             
 2 <?php
 3 require_once('../auth_header.php');
 4 require_once($_SERVER['DOCUMENT_ROOT'].'/init.php');
 5 
 6 =======
 7 <?
 8 require '../auth_header.php';
 9 
10 >>>>>>> development


$ git mergetool
No files need merging

我现在正在手动编辑这些文件。有什么方法可以将适当的合并冲突工具与上述格式的文件一起使用?我不一定需要与 BASE 文件进行比较,只是一种区分和选择文件的两个“面”的方法,如上所示,无需手动擦除部分和标记。我当然更愿意留在 VIM。

我尝试过的所有合并冲突工具,例如kdiff3需要两个文件来区分。它们似乎不支持合并冲突标记。

4

2 回答 2

2

Git 不会在不告诉您存在冲突的情况下插入这些字符。即使使用--rerere-autoupdate标志,它甚至不会自动提交,并且没有其他冲突。这是为了确保您知道存在冲突,并且您可以适当地解决它。

当然,这并不意味着您不能“智取”Git,并且无论如何添加文件,但冲突仍然存在。如果您怀疑这是问题所在,请尝试找出谁与

git log -S'<<<<<<' --all  
于 2015-01-05T15:22:22.520 回答
1

ConflictToDiff 插件可以将一个(它说是 CVS,但也适用于其他工具)冲突文件(即包含<<<<<<<<标记)拆分回冲突版本,并提供合并它们的命令。

或者,我的ConflictMotions 插件定义了移动命令和文本对象,以在冲突的行上进行操作。有了它,您可以解决原始文件中的冲突。

如果已经提交了这些冲突标记,请使用责备功能找到发起者并与他交谈。

于 2015-01-09T11:54:29.880 回答