Короткий ответ - нет.Как отметил R Саху в комментарии , Git не имеет представления о семантике текста, который он объединяет.Он просто рассматривает это как набор строк.Если при объединении двух разных наборов изменений линии перекрываются или примыкают, возникает конфликт слияния.Например, учитывая:
case OLD_CASE_1:
case OLD_CASE_2:
+ case NEW_CASE_1:
return true;
против
case OLD_CASE_1:
case OLD_CASE_2:
+ case NEW_CASE_2:
return true;
Git обычно объявляет конфликт здесь.Если бы этот код Go, а не C ++, Git был бы «более прав» в том, что это настоящий конфликт, поскольку Go не имеет автоматического провала (или, что эквивалентно, имеет эквивалент C ++ по умолчанию break;
перед каждым *).1012 *), то есть в C ++ семантика должна была бы возвращать true only для одного нового случая, и больше не для OLD_CASE_2
.
Теперь, если вы находитесь вДля группы, которая предпочитает перебазировать вытащить запросы, ваш автоматический перебазирование будет проходить гладко , если NEW_CASE_1
PR принят и объединен сначала и , вы создаете свой второйPR на первый и вы перебазируете каждый из ваших оставшихся PR на принятых PR по порядку.Это сложнее и может привести к гораздо большей переработке, если ваши PR должны быть приняты в каком-то другом порядке по какой-то причине, но иногда это довольно приятно.Однако, хотите ли вы и / или ваша группа сделать это, вопрос гораздо важнее.