Git: работа с ветками, Gitflow Workflow - Разработчик Павел Скляр

@pavelsklyar | 15 июл 2020 в 18:24

Git: работа с ветками, Gitflow Workflow

Ветвление в Git

Функционал системы контроля версий предусматривает возможность создания отдельных веток. Это можно представить как дерево. В самом начале у нас есть master, столб нашего будущего дерева. Из него можно создавать ветки для разделения разработки. Каждая из них может содержать в себе разные версии кода.

Предлагаю вам познакомиться с этим на примере Gitflow Workflow.

Gitflow Workflow

Gitflow Workflow - это дизайн рабочего процесса, который был придуман Винсентом Дриссеном (Vincent Driessen). Рабочий процесс Gitflow определяет строгую модель ветвления, разработанную вокруг релиза (выпуска) проекта. Это обеспечивает надежную основу для управления крупными проектами.

Этот рабочий процесс назначает конкретные роли для разных веток и определяет, как и когда они будут взаимодействовать.

Как это работает

Ветки master и develop

Вместо одной главной ветки для записи истории проекта, этот рабочий процесс использует две. Ветка master хранит официальную историю релизов продукта, в то время как ветка develop служит ветвью для интеграции нового функционала.

Для начала, нам нужно создать ветвь develop.

$ git branch develop
$ git push -u origin develop

Ветки для нового фукнционала (Feature branches)

Каждая новая функция (фича) должна находиться в своей собственной ветке. Родительской веткой для них должна быть develop. Когда новый функционал будет готов, происходит слияние с веткой разработки. Ветки feature никогда не должны напрямую взаимодействовать с веткой master.

Создание ветки

Чтобы создать новую ветку для нового функционала, нужно перейти в develop и выполнить команду на создание ветки.

$ git checkout develop
$ git checkout -b feature_branch

Закрытие ветки

Когда работа над обновлением завершена, нужно объединить feature_branch и develop.

$ git checkout develop
$ git merge feature_branch

Релизные ветки

Как только разработано достаточное количество функционала для выпуска (или приближается заранее определённая дата релиза), вы выносите релизные изменения в новую ветвь. Её создание запускает новый цикл выпуска, поэтому никакого нового функционала после запуска в неё уже не добавляется, только исправление ошибок, документация и другие задачи, направленные на релиз. Как только он готов, ветвь release объединяется с master и помечается номером версии. Помимо этого, необходимо слить её с веткой develop.

Использование выделенной ветви для подготовки релизов позволяет одной команде полировать текущий релиз, в то время как другая команда продолжает работать над функционалом для следующего.

Создание ветвей выпуска - это еще одна простая операция ветвления. Как и ветви функций, ветви выпуска основаны на ветви разработки. Новая ветвь выпуска может быть создана с помощью следующих команд.

$ git checkout develop
$ git checkout -b release/0.1.0

Как только релиз будет готов, происходит слияние с master и develop, а затем ветвь выпуска удаляется. Важно снова объединиться в develop, потому что за время подготовки релиза в ветвь release могут быть добавлены критические обновления, которые должны быть доступны и в develop.

Слияние с master:

$ git checkout master
$ git merge release/0.1.0

Ветки для быстрых правок (Hotfix branches)

Ветви hotfix используются для быстрого исправления релизов продукта. Они очень похожи на ветки release и feature, за исключением того, что они наследуются от ветки master, а не develop. Это единственный тип веток, которые должны быть дочерними к master. Как только исправление будет завершено, оно должно быть объединено как с master, так и с develop (или с текущей веткой release), а master должен быть помечен обновлённым номером версии.

Наличие выделенной линии разработки для исправления ошибок позволяет вашей команде решать проблемы, не прерывая остальную часть рабочего процесса и не ожидая следующего цикла выпуска.

Создать hotfix ветку можно с помощью следующих команд:

$ git checkout master
$ git checkout -b hotfix_branch

Чтобы закрыть hotfix ветку, нужно объединить её с master и develop, а затем удалить её.

$ git checkout master
$ git merge hotfix_branch
$ git checkout develop
$ git merge hotfix_branch
$ git branch -D hotfix_branch

Итоги

Что нужно знать о Gitflow:

  1. Ветвь разработки создается из master;
  2. Ветвь выпуска (релиза) создается из develop;
  3. Ветви нового функционала (фичи) создаются из develop;
  4. Когда фича завершена, она объединяется с ветвью develop;
  5. Когда релиз готов, он объединяется и с master, и с develop;
  6. При обнаружении проблемы в master, создается ветвь hotfix из master;
  7. После завершения исправления, оно объединяется и с master, и с develop.

Статья написана на основе оригинальной статьи Gitflow Workflow

Теги: git , ветвление в git , gitflow

161