Главный репозиторий всегда содержит две главные ветки:
master
- главная ветка для продакшена. Содержит только готовые релизы.develop
- главная ветка для разработки.
Когда код в ветке develop
готов к релизу, то все изменения вливаются в ветку master
и помечаются номером релиза.
Вспомогательные ветки:
featured
branches содержат новый функционал приложенияrelease
branches для подготовки релизовhotfix
brances для быстрого исправления ошибок в продакшене
Порождаются от develop
Вливаются в develop
Название веток любое, кроме master
, develop
, release-*
или hotfix-*
Featured branches используют для разработки новых функций, которые войдут в текущий или будущие релизы приложения. В начале работы над веткой мы можем не знать в какой релиз она войдет.
Когда разработка фичи завершена, ветка вливается в develop
или удаляется, если фича была неудачной.
Обычно ветки с фичами создаются и живут в локальном репозитории разработчика.
В начале работы над новой фичей создается ветка от develop
.
Когда фича завершена, ветка вливается обратно в develop
и попадает в следующий релиз.
Порождаются от develop
Вливаются в develop
и master
Название ветки release-*
Ветки релизов нужны для подготовки к выпуску новых версий программы. Они позволяют протестировать и исправить ошибки в ветке перед слиянем в master
.
Новая ветка релиза созается, когда функционал develop
ветки почти соответствует новому релизу. Функционал для следующих релизов в неё не включается.
Номер версии определяется в момент создания релизной ветки.
Ветка релиза создается от develop
и живет пока релиз не будет готов к выпуску. После создания релизной ветки все ветки исправлений вливаются в неё, а не в develop
. Все новые фичи ждут нового релиза и не попадают в текущий.
Когда мы решили, что ветка релиза готова и все ошибки исправлены, то она сливается в master
. Коммит помечается версией релиза.
Все изменения в ветке релиза также добавляются в develop
, чтобы она содержала исправления ошибок.
Порождаются от master
Вливаются в develop
и master
Название ветки hotfix-*
Ветки правок нужны для быстрого исправления ошибок в продакшене. Когда в продакшен версии возникают критические ошибки, от master
ветки создается новая ветвь и в ней идет работа над исправлением ошибки.
Ветка правок создается от master
ветки. Когда ошибки исправлены, изменения вливаются в master
и develop
, чтобы правки попали в следующий релиз. Правка отмечается новой версией в главной ветке.
Примечание: Если в момент обнаружения ошибки существует ветвь
релиза
, то ветка с исправлениями должна вливаться в неё, а не вdevelop
. Правки войдут вdevelop
позже, вместе с веткой релиза.
OSX
brew install git-flow-avh
Внутри своего git репозитория выполнить
git flow init
Новая фича начинается с ветки develop
.
git flow feature start SERP-*
* - номер задачи в JIRA
Команда создает новую ветку фичи и переключается на неё.
После завершения фичи выполняем
git flow feature finish SERP-*
Происходит слияние ветки в develop
, удаляется ветка с фичей, переключаемся на develop
.
Публикуем фичу в репозитории, чтобы её смогли забрать коллеги:
git flow feature publish SERP-*
Получить фичу из origin
git flow feature pull origin SERP-*
Команда
git flow release start <как будем релизы называть?>
Создает ветку релиза от develop
.
Публикуем ветку в origin
git flow release publish ###
Завершение релиза
Команда
git flow release finish ###
- Сливает ветку релиза в
master
- Отмечает релиз тегом по его имени
- Сливает ветку в
develop
- Удаляет ветку релиза
Создаем исправление
git flow hotfix start VERSION [BASENAME]
VERSION - имя нового, исправленного релиза BASENAME - опционально, коммит, от которого создаем ветку
Завершение исправления
Команда
git flow hotfix finish VERSION
Сливаем ветку в develop
и master
. Коммит в master
отмечается тегом с версией исправления.