Позвольте мне в предисловии сказать, что здесь нет правильного или неправильного решения - то, как вы будете обрабатывать конфликт слияния, подобный этому, зависит от того, какая ветвь featureB
.
Вариант 1: перебазировать, если featureB
- это частная ветвь
Если featureB
- это частная ветвь - то есть вы единственный, кто ее совершает, - тогда я бы рекомендовал вам перебазировать ее поверх dev
после слияния featureA
.
Это означает переход от этого:
A--B---M dev
\ /
C--D featureA
\
E--F featureB
к этому:
A--B---M dev
\ / \
C--D E--F featureB
Имейте в виду, что Перебазировка по-прежнему является разновидностью слияния , с той разницей, что git-rebase
применяет один коммит за раз поверх предыдущего, тогда как git-merge
объединяет два коммита со всем их набором изменений.в одной операции.
Выполнение перебазировки заставляет вас разрешить конфликт при коммите, который привел к конфликтующему изменению.Это имеет несколько преимуществ:
- Это дает вам больше контекста вокруг изменения, облегчая поиск разрешения.
- Разрешение станет частью самого коммита -где он принадлежит - вместо того, чтобы заканчивать коммитом слияния, потенциально смешивается с другими несвязанными разрешениями конфликтов.
Вариант 2: объединение, если featureB
является публичной веткой
Еслитем не менее, featureB
является публичной веткой - то есть, несколько человек принимают ее, тогда вы не можете перебазировать ее, потому что это будет переписывать историю .В этом случае вам лучше обрабатывать конфликт слияния в обычном слиянии на ветке dev
.
В результате история будет выглядеть примерно так:
A--B---M------N dev
\ / \ /
C--D E--F featureB
гдеN
- это место, где вы разрешаете конфликт.