Git Flow – это популярная модель ветвления, предназначенная для командной разработки и упрощения управления релизами. Она определяет, как использовать ветки Git для разных целей и как они взаимодействуют друг с другом. Основная идея – четкое разделение функционала по веткам и предсказуемый процесс релиза.
Основные ветки:
main
(или master
): Основная ветка, представляющая стабильный, релизный код. В этой ветке всегда находится код, готовый к развертыванию в production.develop
: Основная ветка для интеграции новых фич. Содержит самый свежий код для следующего релиза. Все новые функциональные возможности разрабатываются и интегрируются здесь.feature/*
: Ветки фич, ответвляющиеся от develop
. Каждая ветка фичи содержит реализацию отдельной функциональности. По окончании разработки фича вливается обратно в develop
.release/*
: Ветки релизов, ответвляющиеся от develop
. Используются для подготовки релиза. Здесь фиксируются последние баги и вносится незначительная документация. После завершения подготовки, ветка релиза вливается в main
и develop
.hotfix/*
: Ветки срочных исправлений, ответвляющиеся от main
. Используются для быстрого исправления критических багов в production. После исправления, ветка hotfix
вливается в main
и develop
(или release
, если релиз еще не закончен).Команды Git, используемые в Git Flow:
Инициализация (если работаете с существующим репозиторием, пропустите этот шаг):
git init
- Инициализирует новый Git репозиторий.Работа с ветками feature
:
git checkout develop
- Переключиться на ветку develop
.git checkout -b feature/имя-фичи
- Создать новую ветку фичи на основе develop
.git add .
- Добавить все изменения в индекс.git commit -m "Описание фичи"
- Закоммитить изменения.git push origin feature/имя-фичи
(если работаете удаленно) - Отправить ветку на удаленный репозиторий.git checkout develop
- Переключиться обратно на ветку develop
.git merge feature/имя-фичи
- Влить ветку фичи в develop
.git push origin develop
(если работаете удаленно) - Отправить изменения в develop
на удаленный репозиторий.git branch -d feature/имя-фичи
- Удалить локальную ветку фичи.git push origin --delete feature/имя-фичи
(если работаете удаленно) - Удалить удаленную ветку фичи.Работа с ветками release
:
git checkout develop
- Переключиться на ветку develop
.git checkout -b release/версия-релиза
- Создать новую ветку релиза на основе develop
.git add .
- Добавить все изменения в индекс.git commit -m "Подготовка к релизу версия-релиза"
- Закоммитить изменения.git push origin release/версия-релиза
(если работаете удаленно) - Отправить ветку на удаленный репозиторий.git checkout main
- Переключиться на ветку main
.git merge release/версия-релиза
- Влить ветку релиза в main
.git tag версия-релиза
- Создать тег для релиза.git checkout develop
- Переключиться на ветку develop
.git merge release/версия-релиза
- Влить ветку релиза в develop
(если в релизной ветке были правки).git push origin main
(если работаете удаленно) - Отправить изменения в main
на удаленный репозиторий.git push origin develop
(если работаете удаленно) - Отправить изменения в develop
на удаленный репозиторий.git push origin --tags
(если работаете удаленно) - Отправить теги на удаленный репозиторий.git branch -d release/версия-релиза
- Удалить локальную ветку релиза.git push origin --delete release/версия-релиза
(если работаете удаленно) - Удалить удаленную ветку релиза.Работа с ветками hotfix
:
git checkout main
- Переключиться на ветку main
.git checkout -b hotfix/описание-хотфикса
- Создать новую ветку хотфикса на основе main
.git add .
- Добавить все изменения в индекс.git commit -m "Исправление: описание хотфикса"
- Закоммитить изменения.git push origin hotfix/описание-хотфикса
(если работаете удаленно) - Отправить ветку на удаленный репозиторий.git checkout main
- Переключиться на ветку main
.git merge hotfix/описание-хотфикса
- Влить ветку хотфикса в main
.git tag версия-релиза-с-хотфиксом
- Создать тег для релиза с хотфиксом.git checkout develop
- Переключиться на ветку develop
.git merge hotfix/описание-хотфикса
- Влить ветку хотфикса в develop
.git push origin main
(если работаете удаленно) - Отправить изменения в main
на удаленный репозиторий.git push origin develop
(если работаете удаленно) - Отправить изменения в develop
на удаленный репозиторий.git push origin --tags
(если работаете удаленно) - Отправить теги на удаленный репозиторий.git branch -d hotfix/описание-хотфикса
- Удалить локальную ветку хотфикса.git push origin --delete hotfix/описание-хотфикса
(если работаете удаленно) - Удалить удаленную ветку хотфикса.Другие полезные команды:
git status
- Показать текущий статус репозитория.git pull origin develop
- Получить последние изменения из ветки develop
.git fetch
- Получить информацию об изменениях из удаленного репозитория, но не вливать их.git log
- Показать историю коммитов.git diff
- Показать изменения между двумя коммитами, ветками или файлами.git revert
- Отменить предыдущий коммит.git reset
- Отменить изменения в рабочей области.Важно: Этот пример демонстрирует базовый Git Flow. Могут быть вариации и расширения, в зависимости от потребностей проекта и команды. Существуют также инструменты, такие как git flow
, которые автоматизируют многие из этих операций, но понимание основных команд и принципов работы Git Flow остается ключевым.