Ни одна строка кода, которая была принята, не является когда-либо потерянной.
Слияние - это просто фиксация с двумя родителями - слияние может включать или удалять любой код из любого родителя.
Сложность заключается в том, что обычные команды, которые используются для определения места, где мог быть удален код (например, hg log -p
), сравнивают набор изменений с его оставленным родителем, поэтому вы увидите толькодобавления и удаления относительно этого родителя.
Если, например, история выглядит следующим образом:
[A]--[B]--[D]
\ /
-[C]-
(где A - родитель B и C, а D имеет двух родителейB и C)
Если изменение было добавлено в B, но родительский элемент D left - это C, а родительский D right - B, то при запуске hg log -p
чтобы увидеть патчи, которые вы видите:
- A по сравнению с ничем
- B по сравнению с A <- показывает изменение, которое вы добавили </li>
- C по сравнениюдо A
- D по сравнению с C
Ни один из них не покажет удаление ваших изменений.Чтобы увидеть, что вам нужен D по сравнению с B, который вы получите:
hg diff -r B -r D
Итак, человек, который слился, бросил ваш код, и вы можете немного покопаться для доказательства.