Почему изменения в другой строке вызывают конфликт слияния git?

Я изменил разные строки в разных ветках, но эти изменения вызывают git merge конфликт. Я прочитал сообщение, но думаю, что изменения происходят в совсем другие линии.

Вот мои тестовые коды.

филиал-база

Hello, my first conflict.
Second line.a    # add a single character 'a' at line 2
Third line.

филиал-а

Hello, my first conflict.
Second line.
Third line.a    # add a single character 'a' at line 3

И я выполнил следующий код, он говорит, что конфликт слияния git.

$ git checkout branch-base
$ git merge branch-a

Вот мой файл конфликта.

Hello, my first conflict.
<<<<<<< HEAD
Second line.a
Third line.
=======
Second line.
Third line.a
>>>>>>> branch-a

Почему происходит этот конфликт? Кажется, я внес изменения в совершенно другие строки (хотя они и соседние).


person heeam shin    schedule 28.08.2020    source источник


Ответы (1)


Должна быть хотя бы одна линия разделения, которая останется неизменной, чтобы их можно было рассматривать отдельно и не создавать конфликта. Учитывая, что они не разделены линией, которая остается одинаковой для всех трех ревизий (две подсказки и общий предок), они рассматриваются как единый блок. Одна ветвь модифицирует этот блок одним способом, другая - другим... итак, конфликт.

person eftshift0    schedule 28.08.2020
comment
Спасибо за ответ. Не могли бы вы дать мне документ для правила «по крайней мере одна линия разделения»? - person heeam shin; 28.08.2020
comment
Вот кое-что, что я написал, надеюсь, что это достаточно информативно. В нем есть конфликт, где вы можете увидеть, как наличие одной линии разделения пропускает конфликт: ezconflict.com /en/conflictsse6.html - person eftshift0; 05.09.2020
comment
Я нашел этот комментарий сегодня. Спасибо. - person heeam shin; 17.11.2020