Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Git Flow: классический workflow
Что такое Git Flow
Git Flow — это популярная модель организации веток (branching model) в git, разработанная Vincent Driessen. Она определяет структуру веток и процесс объединения кода для упорядоченной разработки, особенно в больших команднах. Git Flow идеально подходит для проектов с регулярными релизами.
Основные ветки Git Flow
мастер (main/master) ← Всегда готов к production
↑
├── release-1.0 ← Подготовка к релизу
├── hotfix-1.0.1 ← Срочные патчи в production
↑
разработка (develop) ← Интеграционная ветка
↑
├── feature/user-auth ← Новая функция
├── feature/payment ← Новая функция
└── feature/notifications ← Новая функция
Ветка Master
# master (или main в новых repo) — только ready-for-production код
# Каждый коммит в master = потенциальный релиз
# Создание тега для версии
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0
# Только merge commits из release или hotfix веток
# Изменения в master ТОЛЬКО через pull requests
Ветка Develop
# develop — главная ветка разработки (integration branch)
# Содержит latest development changes
# Создаётся один раз из master
git checkout -b develop master
git push -u origin develop
# Служит базой для всех feature веток
# Периодически merge-ится в master для релизов
Feature Ветки
# feature/* — ветки для новых функций и fixes
# Создаются из develop, merge-ятся обратно в develop
# Создание feature ветки
git checkout -b feature/user-authentication develop
# Разработка
git add .
git commit -m "Add user login endpoint"
git commit -m "Add password validation"
# Отправка на сервер
git push -u origin feature/user-authentication
# Когда готово — создаём Pull Request в develop
# После review и approval — merge в develop
# Удаление после merge
git branch -d feature/user-authentication
git push origin --delete feature/user-authentication
# Соглашение о именовании
feature/user-auth
feature/payment-system
feature/api-v2
bugfix/search-not-working
improvement/performance-optimization
Release Ветки
# release/* — подготовка к релизу (freeze на develop)
# Создаётся когда develop готов к production
# Создание
git checkout -b release-1.0.0 develop
# В release ветке:
# - Обновить версию в package.json
# - Обновить CHANGELOG
# - Исправить только багии в production (НЕ новые функции)
# - Компилировать build файлы
git commit -am "Bump version to 1.0.0"
git commit -am "Update CHANGELOG for 1.0.0"
# Когда готово — merge в обе ветки: master и develop
# Merge в master
git checkout master
git merge --no-ff release-1.0.0 -m "Merge release-1.0.0 into master"
git tag -a v1.0.0 -m "Release 1.0.0"
# Merge в develop (чтобы версия была актуальна там)
git checkout develop
git merge --no-ff release-1.0.0 -m "Merge release-1.0.0 into develop"
# Удаление release ветки
git branch -d release-1.0.0
Hotfix Ветки
# hotfix/* — срочные патчи для production (из master)
# Используется для критических багов в production
# Создание из master (НЕ из develop!)
git checkout -b hotfix/critical-bug master
# Исправление
git commit -am "Fix critical security vulnerability"
# Merge в обе ветки: master и develop
# В master
git checkout master
git merge --no-ff hotfix/critical-bug -m "Merge critical bug fix"
git tag -a v1.0.1 -m "Hotfix 1.0.1"
# В develop
git checkout develop
git merge --no-ff hotfix/critical-bug -m "Merge critical bug fix into develop"
# Удаление
git branch -d hotfix/critical-bug
Полный пример Git Flow
# 1. Инициализация проекта
git clone https://github.com/company/project.git
git checkout develop
# 2. Разработчик начинает работу над функцией
git checkout -b feature/user-profile develop
git add src/components/UserProfile.jsx
git commit -m "Add user profile component"
git commit -m "Add profile edit form"
git push origin feature/user-profile
# 3. Pull Request → Code Review → Approved
# (в GitHub/GitLab/Bitbucket)
# 4. Merge в develop
git checkout develop
git pull origin develop
git merge --no-ff feature/user-profile
git push origin develop
# 5. Когда накопилось достаточно функций → Подготовка релиза
git checkout -b release-2.0.0 develop
echo '2.0.0' > version.txt
git commit -am "Bump to version 2.0.0"
git push origin release-2.0.0
# 6. Release merge
git checkout master && git pull
git merge --no-ff release-2.0.0
git tag -a v2.0.0 -m "Release 2.0.0"
git push origin master --tags
git checkout develop && git pull
git merge --no-ff release-2.0.0
git push origin develop
# 7. Deploy v2.0.0 на production
# (CI/CD pipeline срабатывает на git push origin master --tags)
Плюсы Git Flow
✅ Чёткая структура веток — понятно кто что делает
✅ Параллельная разработка — несколько feature веток одновременно
✅ Контроль релизов — release ветки для заморозки
✅ Быстрые патчи — hotfix без влияния на develop
✅ История ясная — --no-ff merge сохраняет структуру
✅ Подходит для больших команд
Минусы Git Flow
❌ Сложный для начинающих
❌ Много веток — можно запутаться
❌ Медленные CI/CD (много веток для проверки)
❌ Избыточен для маленьких команд
❌ Release ветки требуют дополнительной синхронизации
Git Flow vs GitHub Flow
┌─────────────────┬──────────────┬─────────────────┐
│ Характеристика │ Git Flow │ GitHub Flow │
├─────────────────┼──────────────┼─────────────────┤
│ Сложность │ Сложный │ Простой │
│ Ветки │ Много │ Мало (feature) │
│ Релизы │ Планомерные │ Continuous │
│ Команда │ Большая │ Маленькая │
│ Подходит для │ Версионное ПО│ SaaS / Web │
└─────────────────┴──────────────┴─────────────────┘
GitHub Flow (упрощённый вариант)
# GitHub Flow — 2 ветки вместо 6
# main — production
# feature/* — всё остальное
# Вместо multiple releases — continuous deployment
git checkout -b feature/new-feature main
git push origin feature/new-feature
# → Pull Request → Review → Merge → Deploy
Инструменты для Git Flow
# git-flow — расширение для git
sudo apt install git-flow # Linux
brew install git-flow # macOS
# Упрощённый workflow
git flow feature start user-auth
# = git checkout -b feature/user-auth develop
git flow feature finish user-auth
# = git checkout develop && git merge --no-ff feature/user-auth
# Но многие предпочитают делать вручную для контроля
Выводы
- Git Flow — классическая модель для версионного ПО
- Структура: master → release → develop → feature
- Merge требует --no-ff чтобы сохранять историю веток
- Подходит для команд 5+ человек с регулярными релизами
- Для SaaS/Web лучше GitHub Flow или Trunk-Based Development
- Главное правило: develop = source of truth, master = production