Ответ вслух Middle Git обновлено

Trunk-based или GitFlow

Вопрос

Как в вашей команде устроена работа с ветками? Сравни trunk-based development и GitFlow.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

В trunk-based все вливают маленькие изменения в main часто, хотя бы раз в день, через короткоживущие ветки и PR. Незаконченное прячут за флагами функций, а main всегда готов к релизу.

Что должно прозвучать в ответе

  • trunk-based: короткие ветки, частые вливания в main

  • незаконченное прячут за feature flags

  • GitFlow: develop, release, hotfix, долгие ветки

  • GitFlow уместен при редких версионных релизах

  • долгие ветки дают тяжёлые конфликты

  • выбор связан с CI/CD и частотой деплоя

Что могут спросить следом

  • Как выкатить незаконченную фичу в trunk-based?
  • Что делать с hotfix в trunk-based?
  • Как быть, если ветка живёт уже две недели?

Разбор

В trunk-based все вливают маленькие изменения в main часто, хотя бы раз в день, через короткоживущие ветки и PR. Незаконченное прячут за флагами функций, а main всегда готов к релизу. Это хорошо сочетается с CI/CD и частыми деплоями, но требует хороших автотестов и дисциплины.

GitFlow держит долгоживущие develop и main, плюс ветки release/* и hotfix/*. Он подходит для продуктов с редкими версионными релизами (коробка, мобильные приложения), но ветки живут долго, и слияния становятся болезненными. В веб-команде я бы выбрал trunk-based с короткими ветками и squash merge.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.