Как git обрабатывает ранее не перемотанные вперед слияния из удаленной ветви?


Итак, у меня есть главная ветвь, и я создаю ветвь feature-x для работы над новой функцией. Я сделал несколько коммитов в функцию-х, перебазировать особенность-X от мастера, а потом делать, не перемотка вперед сливаться из-х ветку в ветку master.

Теперь, что произойдет с моей историей фиксации, если я затем удалю ветвь feature-x?

Я делаю слияние без ff, потому что после прочтения статьи (с которой я согласен) легче отслеживать изменения конкретных функций и полное жизненный цикл услуг, делая не-ФФ сливает.

2 2

2 ответа:

Если я правильно вас понял, ваша история после слияния выглядит примерно так:

A-----------E
 \         /
  B---C---D

Здесь D-это глава ветви feature-x после перебазирования, А E-глава главной ветви после слияния. Что происходит с master, когда вы удаляете ветку feature-x? Ничего. Ветвь-это просто указатель на одну конкретную ревизию (плюс некоторые дополнительные данные, такие как рефлог), и когда вы удаляете ее, все, что вы теряете-это просто указатель, мастер останется точно таким же, как и был до того, как вы его удалили.

Как говорится, я не уверен, почему вы делаете ребаз и слияние. Если вы хотите сохранить историю ясной, просто используйте слияние, вам не нужно перебазировать.

На самом деле с историей ничего не происходит. У вас все еще есть та же последовательность (или действительно направленный ациклический граф) коммитов, и имя ветви все еще будет включено в сообщение о коммите слияния.

Вы просто удаляете определенную метку для конкретной фиксации.