У меня проблема с объединением двух ветвей. У меня есть XML-файл со следующим содержанием:Конфликт при слиянии двух ветвей с git
<?xml version="1.0" encoding="utf-8"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="sk" xsi:noNamespaceSchemaLocation="language.xsd">
<topic name="topicName">
<section name="sectionName">
<pair key="key_1" state="0">value 1</pair>
<pair key="key_2" state="0">value 2</pair>
</section>
</topic>
</language>
Тогда следующий случай:
Филиал «мастер» изменения в XML-файле только «состояние» от «0» до «1». т.е.
<?xml version="1.0" encoding="utf-8"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="sk" xsi:noNamespaceSchemaLocation="language.xsd">
<topic name="topicName">
<section name="sectionName">
<pair key="key_1" state="1">value 1</pair>
<pair key="key_2" state="1">value 2</pair>
</section>
</topic>
</language>
Изменения, которые были внесены, были отправлены в теневой репозиторий.
Ветвь «Тест» добавляет новый узел. то есть:
<?xml version="1.0" encoding="utf-8"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="sk" xsi:noNamespaceSchemaLocation="language.xsd">
<topic name="topicName">
<section name="sectionName">
<pair key="key_1" state="0">value 1</pair>
<pair key="key_2" state="0">value 2</pair>
<pair key="key_3" state="0">value 3</pair>
</section>
</topic>
</language>
изменения, которые были внесены, и отправлены в центральный хранилище.
Когда я сливаю ветку «Тест» на ветке «мастер», я получаю конфликт. т.е.
[master] git pull origin Test
Конфликтующее файл выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="sk" xsi:noNamespaceSchemaLocation="language.xsd">
<topic name="topicName">
<section name="sectionName">
<<<<<<< HEAD
<pair key="key_1" state="1">value 1</pair>
<pair key="key_2" state="1">value 2</pair>
=======
<pair key="key_1" state="0">value 1</pair>
<pair key="key_2" state="0">value 2</pair>
<pair key="key_3" state="0">value 3</pair>
>>>>>>> b872e7d1bbbe281482baefa73e322a34c475aa92
</section>
</topic>
</language>
Я не понимаю, почему такого рода изменения приводят к конфликтам. Я могу заверить, что в файлах нет других изменений, таких как пробелы, вкладки или новые строки. (Я неоднократно воспроизводил этот конфликт)
Когда я открываю конфликтный файл с помощью инструмента слияния, он не конфликтует. Он показывает только изменения, и инструмент слияния не автоматически объединяет новую строку. (Я использую git version 1.7.10.4)
Может кто-нибудь объяснить, почему это происходит, и как я могу избежать подобных конфликтов.
Заранее благодарен.
EDIT: Я искал лучшие инструменты для слияния для разрешения git-конфликтов. Я нашел kdiff3. Когда я сделал команду:
git mergetool --tool kdiff3 sk.xml
инструмент не показывал, но он автоматически разрешен конфликт. Я был очень счастливым.
Теперь мои вопросы:
1. Почему не может это сделать?
2. Может ли «kdiff3» доверять, что он решил конфликт хорошо? Я проверил вручную этот тип конфликта, который я опубликовал, и он решил конфликт хорошо. Но возможно ли, что этот инструмент может объединить файлы автоматически неправедно?
Извините, но я до сих пор не понимаю. На «хозяине» были изменены строки 5 и 6. В «Тест» была добавлена новая строка в строке 6. Максимум строка 6 должна быть в конфликте. – dritan
Вы, мой дорогой человек, видите измененные линии. Средство diff видит 2 удаленные строки и 2 (иначе несвязанные) вставленные строки. Вставка «Тест», возможно, была после двух удаленных строк, но нет веских оснований полагать, что она не должна быть вставлена до, между или после двух строк, которые вставил «мастер». – tjd
Я искал лучшие инструменты для слияния для разрешения git-конфликтов. Я нашел ** kdiff3 **. Когда я сделал команду: git mergetool --tool kdiff3 sk.xml Инструмент не показывался, но он разрешил конфликт автоматически. Я был очень счастливым. Теперь мои вопросы: 1. Почему не может это сделать? 2. Может ли «kdiff3» доверять, что он решил конфликт хорошо? Я проверил вручную этот тип конфликта, который я опубликовал, и он решил конфликт хорошо. Но возможно ли, что этот инструмент может объединить файлы автоматически неправедно? – dritan