Ответ
Мы применяли адаптированную версию Git Flow с долгоживущими ветками для разных этапов разработки.
Основные ветки:
main/master— стабильная ветка, соответствующая продакшену. Код только через мерж-реквесты.develop— ветка для интеграции новых функций. Основная ветка для разработки.- *`feature/
** — короткоживущие ветки для разработки новой функциональности. Ответвляются отdevelop`. - *`release/
** — ветки для подготовки релиза (финальное тестирование, исправление багов). Ответвляются отdevelop`. - *`hotfix/
** — ветки для срочных исправлений в продакшене. Ответвляются отmain`.
Типичный workflow для новой функции:
# Создание ветки для задачи
git checkout develop
git pull origin develop
git checkout -b feature/JIRA-123-new-login-button
# После завершения разработки и тестов
git push origin feature/JIRA-123-new-login-button
# Далее создается Pull/Merge Request из feature/* в develop
Для хотфикса:
git checkout main
git pull origin main
git checkout -b hotfix/critical-payment-fix
# Исправление бага, тесты
git push origin hotfix/critical-payment-fix
# MR в main, затем обязательный мерж в develop
Эта стратегия обеспечивала стабильность main и контролируемый поток изменений.