Git branching

Предлагается использовать следующую модель ветвления для наших проектов (изображение взято из статьи на хабре)

Git branching
Git branching

Основные концепции такого ветвления:

  1. почкование и слияние ветвей проходит в строго определенном направлении (откуда может забрать изменения -> название ветки -> куда может вливаться):
    1. null -> master -> dev, hotfixes
    2. master -> hotfixes -> master, release, dev
    3. dev -> release -> dev, master
    4. master, hotfix, release -> dev -> featureX, release
    5. dev -> featureX -> dev
  2. ветка master стабильна в произвольные момент времени (production-ready)
  3. ветка master в каждом своём коммите имеет тег, посколько любой коммит в master – это новый релиз (в master сливаются изменения только из hotfixes и release)
  4. ветка dev – основная ветвь разработки, в которой находятся самые свежие изменения, которые подготовлены для релиза
  5. при слиянии веток использовать флаг `–no-ff`, что заставит git создавать новый коммит и у нас будет дерево разработки, а не прямая
  6. все ветви, кроме master и dev временные, и удаляются после вливания в другую ветку
  7. ветки feature-* являются локальными ветками разработчика, и запись их в центральный репозиторий не желательна

Именование ветвей:

  • {hotfix,release}-VERSION
  • feature-NAME

Эта модель лиш предложение, и мы можем (читай должны) адаптировать её под свои нужды.

Leave a Reply