2015-07-07 4 views
2

Предположим, мне нужно работать с двумя функциями: FEATURE1 и FEATURE2. FEATURE2 связан и должен быть разработан поверх FEATURE1.рабочий процесс для нескольких связанных ветвей функций

Я создал FEATURE1 от MASTER. Обычно лучшим сценарием является завершение FEATURE1, слияние обратно на MASTER, и только потом филиал FEATURE2 прямо с MASTER.

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

  • FEATURE1 почти сделано, но не могут быть объединены в MASTER сразу.
  • Работа FEATURE2 должна начинаться с FEATURE1.
  • FEATURE1 и FEATURE2 должны быть объединены обратно в MASTERотдельно (они должны быть проверены/проверено отдельно).
  • Вполне вероятно, что будут какие-то дополнительные изменения в FEATURE1, прежде чем он может быть объединен с MASTER (после начал работу над FEATURE2).

Так для этого случая вопросы:

  • ли ветвление FEATURE2 от FEATURE1 (как это сделано в диаграмме) является хорошим выбором?
  • Что необходимо сделать, чтобы свести к минимуму возможные конфликты при слиянии FEATURE1 и FEATURE2 (отдельно) назад к MASTER?

enter image description here

ответ

1

Я бы ответила feature2 на основе вашего текущего состояния feature1.

После того, как вы разработали новый API в feature1 (случай 1) или feature1 готов к производству и объединены в master (случай 2), вы должны перебазироваться feature2 на любом feature1 (случай 1) или master (случай 2) ,

Случай 1, Q является новым API или исправление:

master A B C D 
      \ 
feature1 M N P Q 
        \ 
feature2   X' Y' Z' 

Случай 2, M является слияние фиксацию feature1 и master:

master A B C D M 
      \ /\ 
feature1 M N P \ 
        \ 
feature2    X' Y' Z' 
+0

Поскольку feature2 и feature1 должны быть объединены отдельно , Я полагаю, что ваш «case2» - это то, что мне нужно сделать. – artm

+0

Оба случая - это то, с чем я столкнулся в своей повседневной практике. Случай 1 заключается в том, чтобы использовать функциональность 'feature1' в' feature2' (т. Е. Притворная функция 'feature2' была запущена позже после завершения' Q'), случай 2 - притворяться, что 'feature2' был запущен после того, как' feature1' был полностью объединен в 'master'. –

1

Ветвление из FEATURE1 является правильным выбором, и не должно быть слишком много проблем с этим.

Предполагая, что разработка будет продолжена после разветвления в FEATURE2, вы можете объединить два отдельно, и git справится с этим просто отлично.

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

FEATURE1 Если ветвь не будет иметь никаких дальнейших фиксаций после feature2 был разветвленным и FEATURE2 сливается обратно в мастера, вы не сможете отдельно объединить FEATURE1 (как FEATURE2 уже включены все коммиты в FEATURE1).

Смежные вопросы