0

我试图弄清楚当我合并 git 分支时发生了什么。我有一个分支(feature_1)与主分支(develop)不同。我做一个合并

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 这样的合并工具中打开它时,我得到了一些我认为不正确的东西: 融合截图

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

4

2 回答 2

0

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

于 2012-03-27T12:51:15.697 回答
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修复冲突的提交

于 2012-03-27T01:18:21.587 回答