2012-03-27 62 views
0

我想弄清楚当我合并git分支时发生了什么。我有一个从主分支(开发)分支出来的分支(feature_1)。我做了合并git合并结果不能通过比较工具读取

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> 

似乎有两种类型的“diff文件”的在这个文件中,加/减号和带有“HEAD”的箭头。当我在合并工具中打开它时,我会得到一些我认为不正确的东西: meld screenshot

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

回答

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来修复冲突的提交

+0

我明白那一部分。我想我感到困惑的是为什么融合会将冲突标记显示为文件的一部分,它是否应该显示冲突选项以及我想选择哪些选项? – browep 2012-03-27 01:23:54

0

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

+0

一个mergetool像meld?这是一个来自上面的SS,它显示了实际的差异标记,而不是diff标记表示的内容。 – browep 2012-03-27 15:32:25