替代手动编辑合并冲突文件

时间:2015-01-05 11:21:16

标签: git vim merge mergetool

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

 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

我现在editing those files by hand。有没有办法使用正确的合并冲突工具与上面格式化的文件?我不一定需要与BASE文件进行比较,只是一种方法来区分和选择两个方面&#39;如上所示的文件没有手动擦除部分和标记。我当然更愿意留在VIM。

我尝试过的所有合并冲突工具,例如kdiff3需要两个文件才能进行差异化。它们似乎不支持合并冲突标记。

2 个答案:

答案 0 :(得分:2)

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

当然,这并不意味着你不能超越&#34; Git,无论如何都要添加文件,但冲突仍然存在。如果您怀疑这是问题所在,请尝试使用

查找是谁
git log -S'<<<<<<' --all  

答案 1 :(得分:1)

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

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

如果已提交这些冲突标记,请使用 blame 功能查找发起人并与他交谈。