diff工具无法读取git merge结果

时间:2012-03-27 01:13:50

标签: git merge mergetool

我想弄清楚当我合并git分支时发生了什么。我有一个从主分支(develop)分支(feature_1)的分支。我做了合并

git merge develop

我得到了一些预期的冲突

CONFLICT (add/add): Merge conflict in res/values/dimens.xml
Automatic merge failed; fix conflicts and then commit the result.

该文件的状态为:

$ git diff res/values/dimens.xml
diff --cc res/values/dimens.xml
index ec31f04,554d1e7..0000000
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@@ -1,5 -1,4 +1,11 @@@
++<<<<<<< HEAD
 +<resources>
 +    <dimen name="left_nav_side">120dip</dimen>
 +    <dimen name="left_nav_vertical_margin">30dip</dimen>
 +    <dimen name="third_left_nav_vertical_margin">10dip</dimen>
++=======
+ <?xml version="1.0" encoding="utf-8"?>
+ <resources>
+     <dimen name="round_corner">4dp</dimen>
++>>>>>>> develop
  </resources>

在这个文件中似乎有两种类型的“差异”,带有优缺点的那些和带有“HEAD”的箭头的那些。当我在合并工具中打开它时,我会得到一些我认为不对的东西: meld screenshot

正如您所看到的,工作树更改显示为差异并将标记显示为文件的一部分,我认为它们不应该。我得到了与IntelliJ“解决冲突”工具类似的东西。 有人能告诉我我做错了什么或我错过了什么?或者你可以告诉我文件中发生了什么?

2 个答案:

答案 0 :(得分:0)

文件本身包含冲突标记;它看起来像这样:

<<<<<<< HEAD
<resources>
    <dimen name="left_nav_side">120dip</dimen>
    <dimen name="left_nav_vertical_margin">30dip</dimen>
    <dimen name="third_left_nav_vertical_margin">10dip</dimen>
=======
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="round_corner">4dp</dimen>
>>>>>>> develop
</resources>

合并已在提交之间停止,以便您有机会解决问题,因此,如果您diff该文件,它将显示文件和上次提交之间的更改,这将显示所有新内容在该提交中,加上git添加到文件的冲突标记

您真正想要做的是编辑文件,解决冲突,删除标记,然后git add res/values/dimens.xml; git commit来修复冲突的提交

答案 1 :(得分:0)

冲突标记始终是文件的一部分,因为它是正确的。标记不仅由git使用,例如netbeans也使用标记。使用标记,外部程序知道存在合并问题以及如何解决它。