Почему для слияния нужно, чтобы вы считали общего предка?
Я изучаю Git и считаю учебник на этом сайте очень полезным. На этой странице, касающейся слияния, она включает в себя:
+---------- (D) ---------------+ / | \ (A) -- (B) -- (C) -------------- (E) -- (F) | | fix-headers master | HEAD
Коммит слияния (F), имеющий родителей (D) и (E). Поскольку (B) является общим предком между (D) и (E), файлы в (F) должны содержать изменения между (B) и (D), а именно исправления заголовков, включенные в файлы из (E).
Я не понимаю, почему вы беспокоитесь об общем предке B. Почему вы не можете просто объединить D и E, чтобы произвести F? D будет получен из B, но может содержать различия, которые вы хотите. Между B и D могло произойти несколько коммитов с внесением и удалением изменений.
3 ответа
Это просто потому, что слияние работает лучше, если вы знаете общего предка. Смотрите этот ответ, у него есть хорошее объяснение, почему.
(Я стесняюсь спросить, если это апрельский дурак, я не хочу никого оскорблять...)
Может быть, вы не понимаете, что это мерзавец делает слияние для вас?
Вопрос: Вот D и E, можете ли вы сказать мне, как должен выглядеть F?
D E
using System; using System;
public void main() public void main()
{ {
Console.WriteLine("hello world"); Console.WriteLine("Hello world!");
} }
Ответ: нет, вы не можете
Однако, если вы знаете, что B выглядело так:
B
using System;
public void main()
{
Console.WriteLine("hello world");
}
Это становится легким делом, и Git может справиться с этим самостоятельно.
Не знаю, если это отвечает на ваш вопрос...