Как код из main попадает в ветку release?
Продвинутые темы
Код из main в ветку release попадает через ветвление (`git branch`/`checkout`) от main, слияние (merge/PR) или cherry-pick конкретных коммитов, в зависимости от стратегии релизов (Git Flow и др.).
Способы
Создание release-ветки от main
Ответвить release от актуального main:
git checkout main
git pull
git checkout -b release/1.2.0 # release содержит весь код mainВесь код main попадает в release при создании ветки.
Слияние (merge)
Влить main в release (или наоборот):
git checkout release/1.2.0
git merge main # добавить свежие изменения mainCherry-pick (выборочно)
Перенести конкретные коммиты из main в release (для хотфиксов/отдельных фич):
git checkout release/1.2.0
git cherry-pick <hash> # перенести один коммитЧерез Pull Request
Merge Request/PR из main в release с ревью и CI.
Стратегии релизов
Git Flow
main/develop→release/*ветка → тестирование → merge в main + tag.
Trunk-based
- Всё в main; релиз — тег или короткоживущая release-ветка.
GitHub Flow
- main всегда деплоится; релиз — тег/деплой из main.
Как выбирать
- Весь код → ответвить release от main.
- Отдельные фиксы → cherry-pick.
- Регулярная синхронизация → merge.
Коротко для собеседования
Код из main в release попадает: ответвлением release-ветки от main (весь код), слиянием (git merge main — свежие изменения), cherry-pick (git cherry-pick <hash> — конкретные коммиты для хотфиксов) или через PR с ревью/CI. Зависит от стратегии: Git Flow (release-ветка), trunk-based/GitHub Flow (тег из main).