Рабочий процесс 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 Поддержка завершения команды
3.1 git-flow-completion
- Репозиторий: https://github.com/bobthecow/git-flow-completion
- Поддержка bash, zsh, fish.
3.2 oh-my-fish/plugin-git-flow
- Репозиторий: https://github.com/oh-my-fish/plugin-git-flow
- Завершение для fish в рамках фреймворка Oh My Fish.
4 Процесс работы с Gitflow
4.1 Основные ветки (master) и ветки разработки (develop)
Для фиксации истории проекта в рамках этого процесса вместо одной
ветки master используются две ветки. В ветке master хранится
официальная история релиза, а ветка develop предназначена для
объединения всех функций. Кроме того, для удобства рекомендуется
присваивать всем коммитам в ветке master номер версии.
При использовании библиотеки расширений git-flow нужно инициализировать структуру в существующем репозитории:
git flow init
Для github параметр Version tag prefix следует установить в v.
После этого проверьте, на какой ветке Вы находитесь:
git branch
4.2 Функциональные ветки (feature)
Под каждую новую функцию должна быть отведена собственная ветка, которую можно отправлять в центральный репозиторий для создания резервной копии или совместной работы команды. Ветки
featureсоздаются не на основеmaster, а на основеdevelop. Когда работа над функцией завершается, соответствующая ветка сливается обратно с веткойdevelop. Функции не следует отправлять напрямую в веткуmaster.Как правило, ветки
featureсоздаются на основе последней веткиdevelop.
4.2.1 Создание функциональной ветки
Создадим новую функциональную ветку:
git flow feature start feature_branch
- Далее работаем как обычно.
4.2.2 Окончание работы с функциональной веткой
- По завершении работы над функцией следует объединить ветку
feature_branchсdevelop:
git flow feature finish feature_branch
4.3 Ветки выпуска (release)
Когда в ветке
developоказывается достаточно функций для выпуска, из ветки develop создаётся веткаrelease. Создание этой ветки запускает следующий цикл выпуска, и с этого момента новые функции добавить больше нельзя — допускается лишь отладка, создание документации и решение других задач. Когда подготовка релиза завершается, веткаreleaseсливается сmasterи ей присваивается номер версии. После нужно выполнить слияние с веткойdevelop, в которой с момента создания ветки релиза могли возникнуть изменения.Благодаря тому, что для подготовки выпусков используется специальная ветка, одна команда может дорабатывать текущий выпуск, в то время как другая команда продолжает работу над функциями для следующего.
Создать новую ветку release можно с помощью следующей команды:
git flow release start 1.0.0
- Для завершения работы на ветке
releaseиспользуются следующие команды:
git flow release finish 1.0.0
4.4 Ветки исправления (hotfix)
Ветки поддержки или ветки
hotfixиспользуются для быстрого внесения исправлений в рабочие релизы. Они создаются от веткиmaster. Это единственная ветка, которая должна быть создана непосредственно от master. Как только исправление завершено, ветку следует объединить сmasterиdevelop. Веткаmasterдолжна быть помечена обновленным номером версии.Наличие специальной ветки для исправления ошибок позволяет команде решать проблемы, не прерывая остальную часть рабочего процесса и не ожидая следующего цикла релиза.
Ветку
hotfixможно создать с помощью следующих команд:
git flow hotfix start hotfix_branch
- По завершении работы ветка
hotfixобъединяется сmasterиdevelop:
git flow hotfix finish hotfix_branch