Главный репозиторий всегда содержит две главные ветки:
master- главная ветка для продакшена. Содержит только готовые релизы.develop- главная ветка для разработки.
Когда код в ветке develop готов к релизу, то все изменения вливаются в ветку master и помечаются номером релиза.
Вспомогательные ветки:
featuredbranches содержат новый функционал приложенияreleasebranches для подготовки релизовhotfixbrances для быстрого исправления ошибок в продакшене
Порождаются от 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 отмечается тегом с версией исправления.