Обычно вы просто объединяете ветвь выпуска в ветку разработки.
В типичном рабочем процессе ветвь освобождения отделена от ветви разработки. Как вы описали, в ветку разработки добавляются новые коммиты разработки, и исправления добавляются в ветвь релиза. В какой-то момент у вас возникнет слияние ветвей разработки в ветви релиза, то есть ветка разработки получит новое объединение слиянием, а головка ветви разработки (мастер) продвинется, в то время как глава ветви выпуска остается нетронутой.
$ git checkout master
$ git merge -m "Merge in hotfix for 'blah blah blah' back into develop" release
Филиал развития теперь будет содержать как новое развитие совершает и исправления, в то время как выпуск филиал все еще содержит только исправления. Вы можете продолжить добавлять дополнительные исправления в ветку выпуска и объединить их в разработку (а также продолжить выполнение работ по разработке для ветви разработки).
gitflow картина имеет визуализацию этого:
Такой подход не позволит вам выбрать, какие исправления сольются обратно развиваться (если вы не сделаете что-то специально, чтобы исключить определенное совершает). Помните, что когда одна ветвь сливается в другую, первая ветвь эффективно получает все коммиты со второй ветви (из точки слияния второй ветви назад), что первая ветвь еще не имела, т. Е. Получает все фиксации, сделанные на после того, как он прервался с разработки, которое ранее не было объединено в разработку. Если вы сделали 2 исправления в выпуске, не объединили первое, но затем выберите, чтобы слияние разработки было в конце ветки релиза после второго исправления, у разработки будут оба исправления.
-
Единственные исправлениях изменения, которые вы не можете в отрасли развития являются изменения, как натыкаясь версия #. Вам нужно либо исправить это во время слияния (или после), либо убедиться, что вы изолируете эти изменения в отдельной фиксации в ветви релиза, чтобы вы могли «подделать» слияние, которое передается отдельно в ветку разработки, т. Е. Сделать ветвь развития думает, что уже имеет эту фиксацию без фактического включения «различий» в этой фиксации. Я грубо описал процесс здесь:
https://stackoverflow.com/a/19794987/11296
Например, если вы делаете устранении ошибки на ветке релиза, а затем обновить версию # в документации/код в отдельном совершение (последняя фиксации), а затем объединить что в ветку разработки вот так:
$ git checkout release
$ <implement bugfix>
$ git add ...
$ git commit -m "bugfix for ..."
$ <change the version #>
$ git commit -m "bump version number to ..."
$ # Ready to pull this bugfix into development
$ git checkout master
$ # Merge in the bugfix changes (i.e. all but the last commit)
$ git merge -m "Merge in hotfix for 'blah blah blah' back into develop" release^
$ # "Fake" merge the version # change
$ git merge --strategy=ours -m "Fake merge version # change" release
Благодарим вас за подробный ответ. Думаю, у меня есть более четкая картина о том, что делать. – navanitachora