Рабочий процесс Gitflow
Рабочий процесс Gitflow Workflow. Будем описывать его с использованием пакета git-flow
.
Содержание
1 Общая информация
- Репозиторий: https://github.com/petervanderdoes/gitflow-avh/
- Описание модели ветвления: https://nvie.com/posts/a-successful-git-branching-model/
- Gitflow Workflow опубликована и популяризована Винсентом Дриссеном из компании vie.
- Gitflow Workflow предполагает выстраивание строгой модели ветвления с учётом выпуска проекта.
- Данная модель отлично подходит для организации рабочего процесса на основе релизов.
- Работа по модели Gitflow включает создание отдельной ветки для исправлений ошибок в рабочей среде.
- Последовательность действий при работе по модели Gitflow:
- Из ветки
master
создаётся веткаdevelop
. - Из ветки
develop
создаётся веткаrelease
. - Из ветки
develop
создаются веткиfeature
. - Когда работа над веткой
feature
завершена, она сливается с веткойdevelop
. - Когда работа над веткой релиза
release
завершена, она сливается в веткиdevelop
иmaster
. - Если в
master
обнаружена проблема, изmaster
создаётся веткаhotfix
. - Когда работа над веткой исправления
hotfix
завершена, она сливается в веткиdevelop
иmaster
.
- Из ветки
2 Установка программного обеспечения
- Для Windows используется пакетный менеджер Chocolatey.
- Git-flow входит в состав пакета git.
choco install git
- Для MacOS используется пакетный менеджер Homebrew.
brew install git-flow
- Linux
- Gentoo
emerge dev-vcs/git-flow
- Ubuntu
apt-get install git-flow
- Centos
- Первоначально нужно установить репозиторий epel (https://fedoraproject.org/wiki/EPEL):
dnf install epel-release
- Затем, собственно, установить git-flow:
dnf install gitflow
- Первоначально нужно установить репозиторий epel (https://fedoraproject.org/wiki/EPEL):
- Fedora
- Это программное обеспечение удалено из основного репозитория.
- Можно установить вручную или из коллекции репозиториев Copr.
- Установка из коллекции репозиториев Copr (https://copr.fedorainfracloud.org/coprs/elegos/gitflow/):
# Enable the copr repository dnf copr enable elegos/gitflow # Install gitflow dnf install gitflow
- Установка вручную:
cd /tmp wget --no-check-certificate -q https://raw.github.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh chmod +x gitflow-installer.sh sudo ./gitflow-installer.sh install stable
- Gentoo
3 Процесс работы с Gitflow
3.1 Основные ветки (master) и ветки разработки (develop)
Для фиксации истории проекта в рамках этого процесса вместо одной
ветки master
используются две ветки. В ветке master
хранится
официальная история релиза, а ветка develop
предназначена для
объединения всех функций. Кроме того, для удобства рекомендуется
присваивать всем коммитам в ветке master
номер версии.
При использовании библиотеки расширений git-flow
нужно инициализировать структуру в существующем репозитории:
git flow init
Для github параметр Version tag prefix
следует установить в v
.
После этого проверьте, на какой ветке Вы находитесь:
git branch
3.2 Функциональные ветки (feature)
Под каждую новую функцию должна быть отведена собственная ветка, которую можно отправлять в центральный репозиторий для создания резервной копии или совместной работы команды. Ветки
feature
создаются не на основеmaster
, а на основеdevelop
. Когда работа над функцией завершается, соответствующая ветка сливается обратно с веткойdevelop
. Функции не следует отправлять напрямую в веткуmaster
.Как правило, ветки
feature
создаются на основе последней веткиdevelop
.
3.2.1 Создание функциональной ветки
Создадим новую функциональную ветку:
git flow feature start feature_branch
- Далее работаем как обычно.
3.2.2 Окончание работы с функциональной веткой
- По завершении работы над функцией следует объединить ветку
feature_branch
сdevelop
:
git flow feature finish feature_branch
3.3 Ветки выпуска (release)
Когда в ветке
develop
оказывается достаточно функций для выпуска, из ветки develop создаётся веткаrelease
. Создание этой ветки запускает следующий цикл выпуска, и с этого момента новые функции добавить больше нельзя — допускается лишь отладка, создание документации и решение других задач. Когда подготовка релиза завершается, веткаrelease
сливается сmaster
и ей присваивается номер версии. После нужно выполнить слияние с веткойdevelop
, в которой с момента создания ветки релиза могли возникнуть изменения.Благодаря тому, что для подготовки выпусков используется специальная ветка, одна команда может дорабатывать текущий выпуск, в то время как другая команда продолжает работу над функциями для следующего.
Создать новую ветку release можно с помощью следующей команды:
git flow release start 1.0.0
- Для завершения работы на ветке
release
используются следующие команды:
git flow release finish 1.0.0
3.4 Ветки исправления (hotfix)
Ветки поддержки или ветки
hotfix
используются для быстрого внесения исправлений в рабочие релизы. Они создаются от веткиmaster
. Это единственная ветка, которая должна быть создана непосредственно от master. Как только исправление завершено, ветку следует объединить сmaster
иdevelop
. Веткаmaster
должна быть помечена обновленным номером версии.Наличие специальной ветки для исправления ошибок позволяет команде решать проблемы, не прерывая остальную часть рабочего процесса и не ожидая следующего цикла релиза.
Ветку
hotfix
можно создать с помощью следующих команд:
git flow hotfix start hotfix_branch
- По завершении работы ветка
hotfix
объединяется сmaster
иdevelop
:
git flow hotfix finish hotfix_branch