Что такое GitFlow?

«Что такое GitFlow?» — вопрос из категории DevOps, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

GitFlow — это стратегия ветвления для Git, которая определяет строгие правила создания и слияния веток. Она предназначена для управления разработкой, выпуском релизов и исправлением ошибок в проектах с четким циклом выпуска версий.

Основные долгоживущие ветки:

  1. main/master — содержит историю релизов; код здесь всегда готов к production.
  2. develop — основная ветка для интеграции новых функций; здесь находится код для следующего релиза.

Вспомогательные ветки (с ограниченным сроком жизни):

  • *`feature/** — создаются отdevelopдля разработки новой функциональности. По завершении сливаются обратно вdevelop`.
  • *`release/** — создаются отdevelopдля подготовки нового релиза (версионирование, финальные правки). Сливаются вmain(с тегом) и обратно вdevelop`.
  • *`hotfix/** — создаются отmainдля срочного исправления в production. Сливаются вmain(с тегом) и вdevelop`.

Пример рабочего процесса для новой функции:

# Создание ветки для функции
$ git checkout develop
$ git checkout -b feature/user-authentication

# Работа над функцией, коммиты...
$ git add .
$ git commit -m "Add login form"

# Завершение функции и слияние
$ git checkout develop
$ git merge --no-ff feature/user-authentication # Слияние с сохранением истории
$ git branch -d feature/user-authentication # Удаление ветки функции

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

  • Четкое разделение стадий разработки.
  • Подходит для проектов с плановыми релизами и версионностью.

Недостатки:

  • Относительно сложная структура.
  • Может быть избыточной для проектов с непрерывным развертыванием (CI/CD).

Альтернативы: Более простые модели, такие как GitHub Flow (ветка main + feature-ветки) или Trunk-Based Development.