результат git merge не может быть прочитан инструментом diff - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь выяснить, что происходит, когда я объединяю git ветки.У меня есть ветвь, которая отошла (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, я получаю что-то, что я не считаю правильным: meld screenshot

Как вы можете видеть, изменения рабочего дерева отображаются в виде различий и показывают маркеры какчасть файла, которую я не думаю, что они должны.Я получаю нечто подобное с инструментом IntelliJ «разрешать конфликты».Может кто-нибудь сказать мне, что я сделал неправильно или чего мне не хватает?Или, может быть, вы можете просто сказать мне, что происходит в файле?

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Маркеры конфликта всегда являются частью файла, так как он правильный. Маркеры не только используются git, например, netbeans также использует маркеры. С помощью маркеров внешняя программа знает, что существует проблема слияния и как ее решить.

0 голосов
/ 27 марта 2012

Сам файл содержит маркеры конфликта; это выглядит так:

<<<<<<< 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 файл, он покажет изменения между файлом и последним коммитом, который показывает все новые вещи в этом commit, плюс маркеры конфликта, которые git добавил в файл

Что вы действительно хотите сделать, так это отредактировать файл, разрешить конфликты, удалить маркеры, а затем git add res/values/dimens.xml; git commit, чтобы исправить конфликтующий коммит

...