Git Flow
Git Flow — это основанная на Git модель ветвления, предназначенная для того, чтобы помочь командам лучше управлять программным обеспечением и выпускать его.
Git Flow был предложен Винсентом Дриссеном в 2010 году, и благодаря набору стандартных соглашений об именовании веток и рабочих процессов он делает процессы разработки, тестирования и выпуска более упорядоченными и эффективными.
Git Flow в основном состоит из следующих типов веток:master、develop、feature、release、hotfix。
Установка Git Flow
Linux
Debian/Ubuntu:
sudo apt-get install git-flow
Fedora:
sudo dnf install gitflow sudo apt-get install git-flow
macOS
В macOS вы можете использовать Homebrew для установки Git Flow:brew install git-flow
Установка из исходного кода
Если Git Flow недоступен в пакетном менеджере вашего дистрибутива, вы также можете установить его из исходного кода:
git clone https://github.com/nvie/gitflow.git cd gitflow sudo make install
После установки вы можете проверить, успешно ли установлен Git Flow, с помощью следующей команды:
git flow version
Windows
В Windows вы можете установить Git Flow следующими способами:
-
Используйте Git for Windows: Git for Windows включает Git Flow. Вы можетеGit for Windowsустановить Git, а затем использовать Git Bash для работы с Git Flow.
-
Использование Scoop: Если вы используете пакетный менеджер Scoop, вы можете установить Git Flow следующей командой:
scoop install git-flow
-
Использование Chocolatey: Если вы используете пакетный менеджер Chocolatey, вы можете установить Git Flow следующей командой:
choco install gitflow
Модель ветвления Git Flow
masterветка:
- Всегда поддерживайте стабильное состояние и готовность к выпуску.
- Каждый раз, когда выпускается новая версия, она будет взята из
developСлияние ветки вmasterВетка.
developветка:
- Используется для интеграции всех веток разработки.
- Отражает последний прогресс разработки.
- Ветки функций, ветки релизов и ветки хотфиксов ответвляются отсюда и в конечном итоге сливаются обратно сюда.
featureветка:
- Используется для разработки новых функций.
- from
developСоздание ветки, слияние обратно после завершения разработкиdevelopВетка. - Соглашения об именовании:
feature/feature-name。
releaseветка:
- Используется для подготовки релизов новых версий.
- from
developВетка создается, выполняется финальное тестирование и исправление ошибок, после чего она сливается обратно вdevelopиmasterВетку, и помечается тегом с версией. - Соглашения об именовании:
release/release-name。
hotfixветка:
- Используется для исправления срочных проблем.
- from
masterСоздание ветки, слияние обратно после завершения исправленияmasterиdevelopВетку, и помечается тегом с версией. - Соглашения об именовании:
hotfix/hotfix-name。

Принципы работы с ветками
- Каждый коммит в ветке Master должен быть помечен тегом, а ветка Develop создается на основе Master.
- После завершения ветки Feature она сливается обратно в ветку Develop, и ветка обычно удаляется.
- Ветка Release создается на основе Develop, используется для тестирования и исправления ошибок. После выпуска она сливается обратно в Master и Develop, и создается тег для обозначения номера версии.
- Ветка Hotfix создается на основе Master. После завершения слейте ее обратно в Master и Develop и пометьте тегом.1。
Примеры команд Git Flow
- Начать ветку Feature:
git flow feature start MYFEATURE - Завершить ветку Feature:
git flow feature finish MYFEATURE - Начать ветку Release:
git flow release start RELEASE [BASE] - Завершить ветку Release: слить в Master и Develop, пометить тегом, удалить ветку Release.
- Начать ветку Hotfix:
git flow hotfix start HOTFIX [BASE] - Завершить ветку Hotfix: слить в Master и Develop, поставить тег, удалить ветку Hotfix.
Рабочий процесс Git Flow
1. Инициализировать Git Flow
Сначала инициализируйте Git Flow в проекте. Можно использовать плагин Git Flow (напримерgit-flow), чтобы упростить операции.
git flow init
При инициализации нужно задать правила именования веток и ветку по умолчанию.
2. Создать ветку feature
При начале разработки новой функциональности изdevelopветки создайте ветку feature.
git flow feature start feature-name
После завершения разработки слейте ветку feature обратно вdevelopветку и удалите ветку feature.
git flow feature finish feature-name
3. Создайте ветку релиза
При подготовке к выпуску новой версии изdevelopветки, создайте ветку релиза.
git flow release start release-name
Выполните финальные тесты и исправления в ветке релиза. Когда всё будет готово к выпуску, выполните слияние ветки релиза обратно вdevelopиmasterВетку, и помечается тегом с версией.
git flow release finish release-name
4. Создайте ветку исправлений
Когда обнаружена проблема, требующая срочного исправления, изmasterветки, создайте ветку исправлений.
git flow hotfix start hotfix-name
После завершения исправления выполните слияние ветки исправлений обратно вmasterиdevelopветку, и пометьте тегом версии.
git flow hotfix finish hotfix-name
ExampleOperation
Ниже приведён комплексный пример использования Git Flow на практике.
Инициализация Git Flow:
git flow init
Создание и завершение функциональных веток:
git flow feature start new-feature # 开发新功能 git flow feature finish new-feature
Создание и завершение веток релизов:
git flow release start v1.0.0 # 测试和修复 git flow release finish v1.0.0
Создание и завершение веток исправлений:
git flow hotfix start hotfix-1.0.1. # 修复紧急问题 git flow hotfix finish hotfix-1.0.1
Преимущества и недостатки
Преимущества
- Четкая модель ветвления: Четкие правила именования и использования веток делают процесс разработки хорошо организованным.
- Изоляция разработки и релиза: Разделение процессов разработки и релиза снижает влияние неопределенности в разработке на релизы.
- Управление версиями: Каждый релиз и исправление помечается меткой версии, что упрощает отслеживание и управление.
Недостатки
- Сложность: Для небольших команд или простых проектов модель ветвления Git Flow может показаться слишком сложной.
- Частое слияние: В больших командах частое слияние веток может привести к увеличению конфликтов слияния.
Git Flow — это структурированная модель управления ветвлением, которая помогает командам лучше управлять процессом разработки и выпуска программного обеспечения, определяя четкие ветки и рабочие процессы. Хотя это добавляет некоторую сложность, Git Flow обеспечивает мощную поддержку и возможности управления для больших проектов и командной работы.
Другие расширения