Почему я получаю конфликт слияния?

Я сохраняю свои изменения в тайнике. Добавьте немного кода. Совершить.

Когда я пытаюсь применить спрятанные изменения, я получаю конфликт слияния:

@@@ -847,45 -846,6 +855,53 @@@ do $$ begin RAISE NOTICE 'Move time: 20
  set local my.sys_time to '2018-08-23';

  do $$ begin
++<<<<<<< Updated upstream
 +do $$ begin RAISE NOTICE 'Move time: 2018-08-23'; end $$ language 'plpgsql';
 +set local my.sys_time to '2018-08-23';
 +
 +do $$ begin
 +--TODO: Test UPDATE when NEW.app_period is same as OLD.app_period
 +-- and NEW.app_period is intersect app_period() for some rows
 +--As update behavior should be same for rows where NEW and OLD
 +-- as different as equal (see next test after this one)
++||||||| merged common ancestors
++--TODO: Test UPDATE when NEW.app_period is same as OLD.app_period
++-- and NEW.app_period is intersect app_period() for some rows
++--As update behavior should be same for rows where NEW and OLD
++-- as different as equal (see next test after this one)
++=======
++>>>>>>> Stashed changes
  RAISE NOTICE 'Test UPDATE app_period by 2018-08-17 .. 2018-08-24, when applicatoin perio
    USING HINT =  'Row just updated. Nothing special should happen';
  end $$ language 'plpgsql';

Но почему? Спрятанные изменения ничего не добавляют к этим commented TODO строкам, в которых возникает конфликт.


person Eugen Konkov    schedule 24.03.2019    source источник
comment
В Git есть алгоритм, который определяет, когда два одновременных изменения исходного файла вызывают конфликт слияния. Это что-то вроде двух отдельных изменений в пределах 2-3 строк друг от друга. Но независимо от того, когда вы применяете тайник, всегда существует вероятность того, что вы можете получить конфликт слияния. Приходи на работу голодным, когда применяешь заначку, ведь ты должен быть готов к такой возможности.   -  person Tim Biegeleisen    schedule 24.03.2019


Ответы (2)


Git не предполагает, что два непосредственно соседних блока текста не связаны, потому что они часто связаны. В другом слиянии ваш добавленный блок будет комментариями, описывающими функцию, которая была перемещена в другое место или исключена.

person jthill    schedule 24.03.2019

Конфликт означает, что файл был изменен как минимум дважды, параллельно. Как вилка:

Common ancestor -----> V1
                -----> V2

Вы разрешаете конфликт, устанавливая последовательность изменений, вы размещаете их горизонтально в хронологическом порядке:

Common ancestor --> (V1 + V2) --> V3
                        |          |
                        |          |
conflicted stated after merge      new state after resolved conflict        

Какая часть файла изменена, не имеет значения, способ изменения файла (параллельный, а не последовательный) создает конфликт.

person Deniz    schedule 25.03.2019