Я сталкиваюсь с очень странной ситуацией, где:
- Разработчик внес изменения в какой-то файл.
- Объединено изменение с помощью запроса на извлечение.
- Изменение было удалено слиянием.
Теперь я знаю, как работает рекурсивная стратегия Git слияния, и, насколько я понимаю, изменение должно было пережить слияние.
Теперь кровавые подробности. Основные коммиты:
- cfff5f5577 - здесь разработчик внес изменения.
- e2f51c17e7 - это коммит PR слияния. Изменения исчезли отсюда.
Итак, это пиар-коммиты:

Это коммит PR слияния:

Теперь, суть проблемы в том, что изменения в cfff5f5577 не распространяются на e2f51c17e7.
Насколько я понимаю, диаграмма слияния:
+------------ Y -----+ e2f51c17e7
/ /
X /
\ /
+------ cfff5f5577
Где Y - цель PR-слияния, а X - общий предок.
Y - e2f51c17e7 ^ 1, что дает нам 462fc3b376:

А для X я использую команду merge-base, которая выдает 483b84e708:

Итак, окончательная диаграмма слияния:
+------ 462fc3b376 --+ e2f51c17e7
/ /
483b84e708 /
\ /
+------ cfff5f5577
Теперь, чтобы изменения появились в коммите слияния, должно произойти следующее (насколько мне известно):
- соответствующие строки кода должны быть неизменными между 483b84e708 и 462fc3b376
- Соответствующие строки кода должны измениться между 483b84e708 и cfff5f5577
Если это произойдет, изменение будет распространяться на e2f51c17e7.
Сравнение 483b84e708 с 462fc3b376


Итак, эти четыре строки выглядят одинаково.
Сравнение 483b84e708 с cfff5f5577


Изменение есть.
Сравнение cfff5f5577 с e2f51c17e7


Изменение прошло!
Сравнение 462fc3b376 с e2f51c17e7

Это идентично!
Заключение
Из этого я делаю вывод, что автоматическое слияние решило убить изменение. Теперь я понимаю, что мои снимки Beyond Compare могут не точно представлять картинку слияния, потому что BC может выравнивать строки не так, как Git. В каком случае я спрашиваю - как я могу проследить процесс слияния Git, чтобы понять, почему слияние было убито?
Это крайне тревожно, потому что это коммит PR-слияния - мы не можем просмотреть его до , когда он объединен с базой кода, так как он не является частью PR-коммитов. Мы должны верить, что это правильно. И я верю, что это так, поэтому я совершенно озадачен здесь.
Может кто-нибудь объяснить, что происходит?