6. Git Flow
Git Flow: Организуем разработку как профессионалы
Заголовок раздела «Git Flow: Организуем разработку как профессионалы»
Git Flow – это популярная методология ветвления, которая помогает командам организовать процесс разработки, особенно в больших проектах. Он структурирует работу с ветками, делая релизы более предсказуемыми и упрощая параллельную разработку.
Основные ветки Git Flow
Заголовок раздела «Основные ветки Git Flow»Git Flow использует несколько основных веток, каждая из которых имеет свою роль:
main(ранееmaster): Содержит только стабильный, готовый к релизу код. Каждый коммит здесь – это релиз.develop: Основная ветка для разработки. Здесь интегрируются все новые фичи.feature/*: Ветки для разработки новых фич. Отходят отdevelopи сливаются обратно вdevelopпосле завершения работы.release/*: Ветки для подготовки релизов. Отходят отdevelop, позволяют исправить баги перед релизом и подготовить метаданные (например, номер версии). Сливаются вmainиdevelop.hotfix/*: Ветки для срочных исправлений багов в production. Отходят отmainи сливаются обратно вmainиdevelop.
Практические примеры
Заголовок раздела «Практические примеры»Предположим, мы работаем над сайтом.
-
Начало работы:
Окно терминала git checkout develop # Переключаемся на ветку develop -
Разработка новой фичи (например, форма обратной связи):
Окно терминала git checkout -b feature/contact-form # Создаем и переключаемся на ветку feature# Пишем код для формы обратной связи...git add .git commit -m "feat: Add contact form"git checkout developgit merge feature/contact-form # Сливаем feature в developgit branch -d feature/contact-form # Удаляем ветку featuregit push origin develop -
Подготовка релиза:
Окно терминала git checkout -b release/1.0.0 # Создаем ветку release# Исправляем баги, обновляем документацию...git add .git commit -m "chore: Prepare release 1.0.0"git checkout maingit merge release/1.0.0 # Сливаем в maingit tag -a 1.0.0 -m "Release 1.0.0" # Создаем тег для релизаgit checkout developgit merge release/1.0.0 # Сливаем обратно в developgit branch -d release/1.0.0 # Удаляем ветку releasegit push origin main --tagsgit push origin develop -
Срочное исправление бага в production:
Окно терминала git checkout -b hotfix/critical-bug main # Создаем ветку hotfix от main# Исправляем баг...git add .git commit -m "fix: Critical bug in production"git checkout maingit merge hotfix/critical-bug # Сливаем в maingit tag -a 1.0.1 -m "Hotfix 1.0.1" # Создаем тег для hotfixgit checkout developgit merge hotfix/critical-bug # Сливаем обратно в developgit branch -d hotfix/critical-bug # Удаляем ветку hotfixgit push origin main --tagsgit push origin develop
Жизненный пример
Заголовок раздела «Жизненный пример»Многие крупные проекты и фреймворки используют Git Flow или его вариации. Например, многие open-source проекты на GitHub, крупные веб-приложения, разрабатываемые командами, и даже некоторые фреймворки, такие как Symfony (хотя сейчас переходят к менее строгой модели), использовали Git Flow для организации процесса разработки и релизов. Это позволяет им поддерживать стабильную версию для пользователей и одновременно разрабатывать новые фичи.
Ключевые моменты
Заголовок раздела «Ключевые моменты»- Git Flow – это методология ветвления, а не инструмент.
main– для релизов,develop– для разработки.featureветки для разработки новых фич.releaseветки для подготовки релизов.hotfixветки для срочных исправлений.- Git Flow помогает организовать разработку, но может быть избыточным для небольших проектов.
- Рассмотрите упрощенные варианты, такие как GitHub Flow, если Git Flow кажется слишком сложным.
Интерактивный пример
Заголовок раздела «Интерактивный пример»Визуализация веток в Git Flow: