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 остается ключевым.