2016-11-29 8 views
0

Я изучаю различные стратегии ветвления Git, и я продолжаю застревать в какой-то момент. Допустим, у вас есть ведущая ветка. Кроме того, у вас есть ветка разработки, которая является ветвью от мастера. Есть функция/темы ветвей:Как препятствовать багги совершает в ветке разработки с использованием разветвления/слияния Git?

  • FixFrontEnd
  • FixBackEnd
  • ChangeConfig

Три различных разработчики каждое изменение. Разработчик ChangeConfig быстро завершает работу, совершает и объединяется в ветку разработки. Эта ветка разработки теперь построена и развернута в среде Dev. Кто-то проверяет эту новую конфигурацию и одобрен для перехода от Dev к среде QA. Тот же успех найден для ветвей FixFrontEnd и FixBackEnd. В конечном итоге они переходят к качеству.

Приоритеты меняют следующий, а три исправления/функции остаются сидящими в QA. Новое исправление/функция YetAnotherChange делает его QA. Мы обнаружили проблемы с FixFrontEnd и ChangeConfig в QA. Однако YetAnotherChange должен перейти в Production ASAP.

Все, что я читаю, говорит о том, что ветка разработки объединяется в главную ветвь, новая сборка создается для производства с использованием мастера и развертывается. Разве FixFrontEnd и ChangeConfig не затянутся в слиянии, чтобы справиться? Как все подходят к этому?

Вишневый сбор кажется сложным выбором. Я хотел бы немного подумать о том, как решить эту проблему. Я ищу простое решение. Кроме того, предположим, что мы смогли выполнить завитушки. Как мы можем по-настоящему верить, что то, что выбрали и построил вишня, будет работать так же, как и при построении с помощью ветки развития? Я где-то заблудился в лесу?

+1

Пожалуйста, покажите нам несколько диаграмм различных ветвей. –

+0

На практике интерфейс и бэкэнд часто рассматриваются как отдельные проекты и могут быть лучше, чем два отдельных хранилища. Может быть, об этом стоит подумать в вашем случае? – halfer

ответ

0

Итак, вы хотите внести изменения в производство без изменений с FixFrontEnd и ветвей ChangeConfig. Вы можете использовать способ его исправить. Давайте проиллюстрируем ниже графика:

A---B---C master 
\ 
    D----E----F----G ----L develop 
    / |  \  \ 
    H  I  J  K 

Предположим фиксации истории из каждого исправления/функциональных ветвей, как:

ChangeConfig: H, а затем объединить развивать ветку

FixFrontEnd: I, а затем слить для разработки филиала

FixBackEnd: J и затем слить для развития отрасли

YetAnotherChange: K, а затем объединить развивать ветку

Вам просто нужно найти совершить идентификатор D, F и L, а затем использовать git rebase --onto <commit id for D> <commit id for F> <commit id for L>, то развивать отрасль не будет содержать изменения от FixFrontEnd и ChangeConfig ветви. И он может пойти на производство. График будет равен:

A---B---C master 
\ 
    D ----G ----L develop 
     \  \ 
      J  K 

примечание: во время перебазирования, может имеет конфликтный файл, вам нужно использовать git add <conflicted filename> и git rebase --continue, то перебазироваться будет продолжаться.

+0

Не будет ли это включать FixBackEnd при выходе на производство? Это еще не одобрено для производства, поскольку оно все еще сидит в ОК. Итак, почему мы должны объединить это в мастера? Я думал, что мастер должен представлять то, что в производстве. –

+0

@LeroyJenkinsCoder, Да, он не будет включать FixFrontEnd и ChangeConfig (ветви выпуска). Извините за недоразумение, я имел в виду, что он готов к производству. И все там исправить выполняются при разработке ветки, график будет равен последнему в моем ответе (я добавил его только сейчас). –

0

Все, что я читаю, говорит, что развивать отрасль слито в главный филиал

Не действительно: вы можете:

  • перебазироваться YetAnotherChange на вершине мастера (а затем быстро -forward до YetAnotherChange HEAD)
  • Объединение master назад develop
  • переустановите остальные ветви функций сверху develop.

Любая операция по переустановке изменит историю этих ветвей, поэтому ее необходимо выполнить с хорошей коммуникацией с разработчиками, работающими над этими ветвями, чтобы они могли восстановить свое рабочее дерево в новый филиал HEAD.