Как установить git flow windows

Обновлено: 02.07.2024

Если вы все еще создаете ветки вручную (git branch new-feature), либо не используете их вообще (что еще печальней :)), советую присмотреться к небольшой надстройке над git - git-flow. Данный инструмент значительно упростит и сделает понятной работу для всех участников репозитория, даже если вы работаете над проектом в одиночку, он позволит вести вполне стандартную модель веток (master + develop) и поддерживать семантического версионирование релизов.Что же делает git-flow? Основная задача, это сопровождение трех типа веток проекта. А именно:

  1. master - главная ветвь для релизов
  2. develop или dev - главная ветвь разработки
  3. feature/* - ветви с новыми функциями, которые потенциально будут слиты в dev
  4. hotfix/* - ветви хотфиксов master
  5. support/* - ветки поддержки
По сути git-flow представляет из себя cli надстройку над git которая создает, сливает, пушит и теггирует ветви просто предоставив одну команду вместо нескольких git команд. Установим данный инструмент, и рассмотрим простой пример его использования. Если установка прошла успешно, попробуйте ввести "git flow", ниже должно вывестись список доступных команд: Создадим тестовый репозиторий, и попробуем использовать некоторые преимущества git flow. На данном этапе нам нужно инициировать конфигурацию git-flow. Процесс инициализации позволяет задать свои имена для веток назначения, но в нашем случае мы будем использовать стандартные имена (master, develop итд.). Запускаем и вводим везде enter: Допустим сейчас нам нужно сделать "фичу X" - создадим для этого отдельную ветку командой "git flow feature start X":

В итоге у нас появиться ветка "feature/X". Попробуем внести изменения и зафиксировать их.

Но допустим сейчас появился баг в master ветке, который нужно срочно попроавить. Создадим хотфикс с помощью "git flow hotfix start fixbug":

Таким образом мы создали ветвь "hotfix/fixbug" и перешли на нее:

Поправим условный баг, и зафиксируем изменения:

Далее нам необходимо применить хотфикс (слияние или rebase) к master и develop, чтобы структура проекта осталась целостной. Используем для этого "git flow hotfix finish fixbug":

Что мы получили в итоге (дословно написано выше):

  • ветка hotfix/fixbug слита в master
  • хотфиксу назначен тег fixbug
  • hotfix/fixbug слит в develop
  • ветка hotfix/fixbug удалена (локально)
  • репозиторий переключен на develop

Ну разве это не прекрасно :)? Далее, попробуем теперь завершить нашу "фичу X" с помощью "git flow feature finish X":

Что мы получили:

  • ветка feature/X слита в develop
  • ветка feature/X удалена (локально)
  • репозиторий переключен на develop
Похожим образом можно создавать релизы и версионировать их, сделаем релиз 0.0.1. Для этого выполним такую последовательность:
  1. запустим git flow release start 0.0.1
  2. добавим файл с информацией о релизе и зафиксируем изменения
  3. запустим git flow release finish 0.0.1
  1. создалась ветка release/0.0.1
  2. мы внесли в нее файл информации релиза (release-0.0.1.txt)
  3. ветка релиза слита в мастер
  4. создан тег 0.0.1
  5. ветка релиза слита в develop
  6. ветка релиза удалена (локально)
  7. репозиторий переведен на develop

Мой вывод: git-flow - отличный инструмент, который позволяет вести чистую модель ветвления в проекте, и упростить работу.

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

Git flow может работать под macOS, Linux и Windows

Для более подробных инструкций по установке git flow, пожалуйста, прочитайтеgit flow wiki

macOS

Linux

Windows (Cygwin)

Чтобы установить git-flow, вам нужны wget и util-linux.

Чтобы настроить ваш проект, Git flow требует процесса инициализации.

инициализация

Используя git-flow, начните с инициализации существующего git-репозитория:

Вы должны ответить на несколько вопросов о соглашениях об именах для филиалов.
Рекомендуется использовать значение по умолчанию.

Разработка новых функций для будущих выпусков

Обычно это существует только в библиотеке разработчика.

Добавить новые функции

Разработка новых функций основана на ветке «Разработка».

Начните разработку новых функций с помощью следующей команды:

Эта операция создает функциональную ветвь на основе 'Develop' и переключается под этой ветвью.


Завершить новые функции

Завершите разработку новых функций. Это действие выполняет следующие операции.

  • Объединить ветку MYFEATURE в «Develop»
  • Удалить эту новую функциональную ветку
  • Вернитесь в ветку 'Develop'


Новые функции выпущены

Сотрудничаете ли вы, чтобы разработать новую функцию?
Опубликуйте новую ветвь функций на удаленном сервере, чтобы другие пользователи также могли использовать эту ветку.


Получите новую ветку

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

ты можешь использовать

Отслеживание веток объектов по происхождению.


  • Поддержка новой версии выпуска для производственных сред.
  • Разрешить исправление мелких проблем и подготовить метаданные к выпуску

Начните готовиться к выпуску версии

Чтобы начать подготовку релизной версии, используйте команду git flow release.

Он создает ветку релиза из ветки 'Develop'.

Вы можете выбрать один [BASE] Параметр, хэш-значение sha-1 записи фиксации, запускает ветвь релиза. Хеш-значение sha-1 записи коммита должно находиться в ветке 'Develop'.

Рекомендуется выпустить сразу после создания ветки релиза и разрешить другим пользователям отправлять контент в эту ветку релиза. Команда очень похожа на выпуск новых функций:

(Вы можете пройти

git flow release track RELEASE Команда для проверки удаленных изменений версии выпуска)


Завершите выпуск версии

Завершение релизной версии - это большая операция в git-ветке. Он выполняет следующие действия:

  • Слияние ветки релиза с веткой 'master'
  • Тег с названием ветки релиза
  • Слияние ветки релиза для «разработки»
  • Удалить ветку релиза


Запустите git flow аварийного ремонта

Как и другие команды git flow, ветка аварийного восстановления начинается с:

Параметр VERSION отмечает ревизию. Вы можете начать с [BASENAME], [BASENAME] Номер версии, который был указан при окончательном выпуске


Полный аварийный ремонт

Когда ветка аварийного восстановления завершена, код объединяется с ветвями разработки и мастера. Соответственно, основная ветка отмечена пересмотренной версией TAG.

Git-flow — это устаревшая версия рабочего процесса Git, в свое время ставшая принципиально новой стратегией управления ветками в Git. Популярность Git-flow стала снижаться под влиянием магистральных рабочих процессов, которые на сегодня считаются предпочтительными для современных схем непрерывной разработки ПО и применения DevOps. Кроме того, Git-flow не слишком удобно применять в процессах CI/CD. В этой публикации приводится описание Git-flow для истории.

Что собой представляет Git-flow?

Git-flow — альтернативная модель ветвления Git, в которой используются функциональные ветки и несколько основных веток. Эта модель была впервые опубликована и популяризована Винсентом Дриссеном на сайте nvie. По сравнению с моделью магистральной разработки, в Git-flow используется больше веток, каждая из которых существует дольше, а коммиты обычно крупнее. В соответствии с этой моделью разработчики создают функциональную ветку и откладывают ее слияние с главной магистральной веткой до завершения работы над функцией. Такие долгосрочные функциональные ветки требуют тесного взаимодействия разработчиков при слиянии и создают повышенный риск отклонения от магистральной ветки. В них также могут присутствовать конфликтующие обновления.

Git-flow можно использовать для проектов, в которых запланирован цикл релизов и реализуется характерная для DevOps методика непрерывной поставки. В этом рабочем процессе используются понятия и команды, которые были предложены в рамках рабочего процесса с функциональными ветками. Однако Git-flow привносит новые специфические роли для разных веток и определяет характер и частоту взаимодействия между ними. Помимо функциональных веток в рамках этого рабочего процесса используются отдельные ветки для подготовки, поддержки и регистрации релизов. При этом вы по-прежнему можете пользоваться преимуществами рабочего процесса с функциональными ветками, такими как запросы pull, изолированные эксперименты и эффективное командное взаимодействие.

Начало работы

Gitflow — это лишь методика работы с Git; в ней определяется, какие виды веток необходимы проекту и как выполнять слияние между ними. Ниже мы познакомимся с назначением веток. Набор инструментов git-flow представляет собой отдельную утилиту командной строки, которая требует установки. Процесс установки прост. Пакеты команд git-flow доступны для многих операционных систем. В системах OS X можно выполнить команду brew install git-flow . Если вы используете Windows, вам нужно загрузить и установить git-flow. После установки решения git-flow необходимо выполнить команду git flow init , чтобы использовать его в проекте. Этот набор инструментов играет роль обертки Git. Команда git flow init является расширением стандартной команды git init и не вносит изменений в репозиторий помимо создания веток.

Порядок действий

Ветка разработки и главная ветка

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

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

При использовании библиотеки расширений git-flow, для создания ветки develop можно выполнить команду git flow init в существующем репозитории:

Функциональные ветки (feature)

Обратите внимание, что комбинация веток feature с веткой develop фактически представляет собой рабочий процесс с функциональными ветками. Но рабочий процесс Gitflow на этом не заканчивается.

Как правило, ветки feature создаются на основе последней ветки develop .

Создание функциональной ветки

Без использования расширений git-flow:

С использованием расширений git-flow:

Продолжайте работу с Git как обычно.

Окончание работы с функциональной веткой

После завершения работы над функцией следует объединить ветку feature_branch с develop .

Без использования расширений git-flow:

С использованием расширений git-flow:

Ветки выпуска (release)

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

Благодаря тому, что для подготовки выпусков используется специальная ветка, одна команда может дорабатывать текущий выпуск, в то время как другая команда продолжает работу над функциями для следующего. Это также позволяет разграничить этапы разработки (например, можно без труда посвятить неделю подготовке к версии 4.0 и действительно увидеть это в структуре репозитория).

Создание веток release — это еще одна простая операция ветвления. Как и ветки feature , ветки release основаны на ветке develop . Создать новую ветку release можно с помощью следующих команд.

Без использования расширений git-flow:

При использовании расширений git-flow:

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

Для завершения работы в ветке release используйте следующие команды:

Без использования расширений git-flow:

Или при использовании расширений git-flow:

Ветки исправления (hotfix)

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

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

Без использования расширений git-flow:

При использовании расширений git-flow:

По завершении работы с веткой hotfix ее сливают с main и develop (как и в случае с веткой release ).

Пример

Далее показан полный цикл работы с функциональной веткой (предполагается, что у нас есть репозиторий с веткой main ).

Помимо работы с ветками feature и release , продемонстрируем работу с веткой hotfix :

Резюме

В этой статье мы рассмотрели модель работы Gitflow. Gitflow — лишь одна из многих методологий работы с Git, доступных вам и вашей команде.

Эта шпаргалка показывает основные способы использования операций git-flow.

Общие замечания

  • Git flow предоставляет превосходную командную строку со справкой и улучшенными выводом. Внимательно читайте его, чтобы знать, что происходит.
  • Клиент для macOS/Windows Sourcetree — отличный GUI для Git — также поддерживает git-flow
  • Git-flow основан на слиянии. Для слияния веток фич не используется rebase.

Установка

  • В первую очередь вам нужна рабочая установка git
  • Git flow работает на macOS, Linux и Windows

macOS

Linux

Windows (Cygwin)

Вам потребуется wget и util-linux для установки git-flow.

Подробные инструкции по установке git flow смотрите на git flow wiki.

install git-flow

Приступая к работе

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

Инициализация

Для начала использования git-flow проинициализируйте его внутри существующего git-репозитория:

Вам придётся ответить на несколько вопросов о способах именования ваших веток.
Рекомендуется оставить значения по умолчанию.

  • Разработка новых фич для последующих релизов
  • Обычно присутствует только в репозиториях разработчиков

Начало новой фичи

Разработка новых фич начинается из ветки "develop".

Для начала разработки фичи выполните:

Это действие создаёт новую ветку фичи, основанную на ветке "develop", и переключается на неё.

Завершение фичи

Окончание разработки фичи. Это действие выполняется так:

  • Слияние ветки MYFEATURE в "develop"
  • Удаление ветки фичи
  • Переключение обратно на ветку "develop"

Публикация фичи

Вы разрабатываете фичу совместно с коллегами?
Опубликуйте фичу на удалённом сервере, чтобы её могли использовать другие пользователи.

Получение опубликованной фичи

Получение фичи, опубликованной другим пользователем.

Вы можете отслеживать фичу в репозитории origin с помощью команды git flow feature track MYFEATURE

Создание релиза

  • Поддержка подготовки нового релиза продукта
  • Позволяет устранять мелкие баги и подготавливать различные метаданные для релиза

Начало релиза

Для начала работы над релизом используйте команду git flow release Она создаёт ветку релиза, ответляя от ветки "develop".

При желании вы можете указать [BASE] -коммит в виде его хеша sha-1, чтобы начать релиз с него. Этот коммит должен принадлежать ветке "develop".

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

Вы также можете отслеживать удалённый релиз с помощью команды
git flow release track RELEASE

Завершение релиза

Завершение релиза — один из самых больших шагов в git-ветвлени. При этом происходит несколько действий:

  • Ветка релиза сливается в ветку "master"
  • Релиз помечается тегом равным его имени
  • Ветка релиза сливается обратно в ветку "develop"
  • Ветка релиза удаляется

Исправления

  • Исправления нужны в том случае, когда нужно незамедлительно устранить нежелательное состояние продакшн-версии продукта
  • Может ответвляться от соответствующего тега на ветке "master", который отмечает выпуск продакшн-версии

git flow hotfix start

Как и в случае с другими командами git flow, работа над исправлением начинается так:

Аргумент VERSION определяет имя нового, исправленного релиза.

При желании можно указать BASENAME-коммит, от которого произойдёт ответвление.

Завершение исправления

Когда исправление готово, оно сливается обратно в ветки "develop" и "master". Кроме того, коммит в ветке "master" помечается тегом с версией исправления.

Читайте также: