Что такое git flow

Historical Branches 
Вместо использования только одной master ветки, этот workflow использует две ветки, для записи истории проекта. Master хранит официальную историю релизов, в development же ветке ведется активная разработка. Также важно тагать коммиты в master ветки номерами версий.

Feature Branches 
Каждая новая фича должна разрабатываться отдельно - в своей ветке, которая должна пушиться в центральный репозиторий для сохранения работы или коллаборации с другими разработчиками. Для создания фичебранча используется development ветка. Когда разработка фичи закончена, она сливается в development. Фичи никогда не должны сливаться напрямую с master веткой.

Release Branches 
Как только development наберет достаточно фич для релиза (или в заранее определенную дату) создается release ветка из development ветки.

Создание этого бранча начинает новый релиз-цикл, поэтому в эту ветку уже не должно покидать никаких новых фич - только баг-фиксы, генерация документации и другие таски, ориентированные на релиз.

Как только релиз-ветка подготовлена, ее сливают с master и тагают новой версией. Также она должна быть слита и с development веткой, которая уже скорее всего убежала вперед, с момента инициализации релиза.

Использование отдельной ветки для релиза позволяет одной команде готовить релиз, в том время когда другая команда будет продолжать разрабатывать новые фичи в development для последующих релизов.

Hotfix Branches 
Hotfix ветки используются для быстрого патчинга релизов. Это единственная ветка, которая создается из master. Как только фикс готов, он должен быть слит как в master, так и в development (или в новый release, если она есть) и master должен быть тегирован новой версией (инкрементирована patch цифра. v.1.0.1, например)

Это позволяет исправлять ошибки не прерывая весь воркфлоу или не дожидаясь следующего релиза, для выкатывания исправлений.

Oct. 10, 2023, Источник

Git Flow — модель ветвления, предназначенная для работы над проектами и управления их версиями. Предлагает стандартизированный подход к ветвлению и слиянию.

Основные типы веток включают:

Основные:

  • master: Содержит код продакшн-версии. Все релизы начинаются и завершаются в этой ветке.
  • develop: Разработка, содержащая последние изменения кода для следующего релиза. Все фичи и исправления сначала сливаются сюда.

Вспомогательные:

  • feature: Для разработки новых функций. Каждая новая функция создается в отдельной ветке feature и в конечном итоге сливается обратно в develop.
  • release: Для подготовки новых продуктовых релизов. Они позволяют последние подгонки и исправления перед слиянием ветки release в master и develop.
  • hotfix: Для немедленного исправления ошибок в продакшн-версии кода. Hotfix-ветки создаются от master и, после исправления, сливаются обратно в master и develop.

Преимущества:

  • Структурированность: Структура ветвления помогает командам организовать процесс разработки и облегчает навигацию по репозиторию.
  • Гибкость: Позволяет командам адаптироваться к различным сценариям разработки, будь то быстрое внедрение исправлений или длительная разработка новых функций.
  • Поддержка: Распространенная модель с многочисленными руководствами и инструментами, поддерживающими этот подход.

Недостатки:

  • Сложность: Для небольших проектов может показаться излишне сложной и громоздкой из-за большого количества веток и правил.
  • Непрерывная доставка: Может быть не лучшим выбором для проектов, использующих методологии непрерывной интеграции (CI) и непрерывной доставки (CD), поскольку модель предполагает более длительные циклы разработки и релизов.

Git Flow популярная модель ветвления для крупных проектов и команд, которым необходим четкий и организованный процесс управления версиями.

Feb. 22, 2024, easyoffer