Что такое GitFlow?

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

Ответ

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

Основные ветки и их назначение:

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

Пример рабочего процесса:

# Начало работы над новой функцией
$ git checkout develop
$ git checkout -b feature/user-authentication

# Завершение и слияние фичи
$ git checkout develop
$ git merge --no-ff feature/user-authentication
$ git branch -d feature/user-authentication

# Создание ветки для релиза
$ git checkout -b release/v1.2.0 develop

Плюсы:

  • Чёткая структура, понятная всей команде.
  • Хорошо отделяет стабильный код от разработки.
  • Удобен для проектов с долгосрочной поддержкой нескольких версий.

Минусы:

  • Сложнее для небольших команд и проектов с частыми релизами (CI/CD).
  • Создаёт длинную и сложную историю коммитов.
  • В современных практиках (Trunk-Based Development) считается избыточным.