что такое гит флоу

Шпаргалка по git-flow

эффективное ветвление с помощью git-flow от Vincent Driessen

Введение

git-flow — это набор расширений git предоставляющий высокоуровневые операции над репозиторием для поддержки модели ветвления Vincent Driessen. узнать больше

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

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

Установка

macOS

Linux

Windows (Cygwin)

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

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

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

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

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

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

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

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

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

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

git flow feature start MYFEATURE

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

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

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

git flow feature finish MYFEATURE

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

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

git flow feature publish MYFEATURE

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

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

git flow feature pull origin MYFEATURE

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

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

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

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

git flow release start RELEASE [BASE]

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

git flow release publish RELEASE

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

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

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

git flow release finish RELEASE

Исправления

git flow hotfix start

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

git flow hotfix start VERSION [BASENAME]

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

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

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

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

git flow hotfix finish VERSION

Команды

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Последние замечания

Источник

Рабочий процесс Gitflow Workflow

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, изолированные эксперименты и эффективное командное взаимодействие.

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

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

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

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

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

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

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

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

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

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

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

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

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

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

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

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

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

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

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

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

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

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

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

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

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

Пример

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

Резюме

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

Ключевые идеи, которые нужно запомнить о Gitflow:

Последовательность действий при работе по модели Gitflow:

Готовы изучить Git?

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

Источник

Про Git, Github и Gitflow простыми словами

Не самое исчерпывающее, но точно вполне доходчивое руководство по Git, Github и Gitflow – для тех, кого эти слова смущают, хотя не должны.

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Контроль версий помогает не только избежать досадных косяков при внесении изменений, но и необходим для командной работы над проектом. В этом материале мы рассмотрим основные команды для консоли и разберем самую популярную модель управления ветками проекта. И про ветки тоже поговорим.

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Git – это распределенная система контроля версий (version control system – VCS).

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

Распределенность git’а отличает его от прочих vcs. Под распределенностью следует понимать, буквально, возможность использования одной системы контроля на проекте множеством разработчиков.

К слову, Git создал вот этот обходительный джентельмен:

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоуЛинус Торвальдс, создатель Git и Linux, передает привет Nvidia

С чего начнем?

Для начала, убедитесь, что у вас установлен Git.

Теперь, все что нам понадобится, чтобы создать репозиторий, это команда git init в нужном каталоге.

Откройте командную строку, и перейдите в Desktop (да, будем оригинальны), а там создайте каталог (например, proglib).

Теперь, проходим в новый каталог и выполняем git init.

Все, у нас есть пустой репозиторий.

Добавление файлов

Давайте создадим простой README.md файл, что-то вроде:

git status – простая команда, которая будет регулярно использоваться. Она показывает информацию о статусе проекта в git. Если вы выполните ее в каталоге proglib, будет видно, что файл README.md не отслеживается git’ом.

Если выпонить git status еще раз, мы увидим, что теперь в системе появился новый файл, который мы добавили.

Коммитим изменения

Чтобы закомминтить изменения в локальный репозиторий, просто напишите в командной строке:

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

Пушим в удаленный репозиторий

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

Нажмите кнопку Start a project и задайте проекту имя, остальные настройки можно оставить по умолчанию.

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Ветки

Git делает ветвление очень простым. Допустим, мы находимся в мастер-ветке и хотим дописать функционал, основываясь на коде из этой ветки. Для этого нужно всего лишь написать команду для создания дополнительной ветки и провести всю работу там. А как закончите, замерджить (то есть, слить ветки) все обратно в мастер.

Внесите изменения в ваш README.md, сохраните их и используйте следующие команды, чтобы закоммитить изменения и замерджить их в мастер:

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

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Но есть один подход, который популярен в сообществе. Знакомьтесь, популярная модуль управления ветками Gitflow:

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Схема выглядит беспорядочно, когда видишь ее впервые, так что пойдем по порядку. У нас есть две основные ветки: master и develop.

В ветке master содержится ровно тот же код, что и в рабочей (читай, продакт) версии проекта. А вся работа делается в ветке develop.

Во время работы на основе develop создаются так называемые feature-ветки. Их может быть неограниченное количество.

Далее, у нас есть ветка release, которая используется для подготовки к новому релизу проекта.

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

Вот как в теории, происходит рабочий процесс в Gitflow:

1. Создается репозиторий
2. Репозиторий инициализируется
3. Начинается работа на ветке develop
4. Возникает необходимость опробовать новую штуку – создается feature-ветка и делаются коммиты
5. Закончив работу на feature-ветке, вы сливаете ее с develop
6. Если вы довольны текущей версией, но хотите продолжить работу, создается ветка release, куда перемещается текущая версия. Правка багов будет происходить на этой же ветке.
7. Когда с веткой release покончено, время слить ее в master и продолжить работу с develop
8. Кроме того, этот момент можно отметить на master-ветке

Gitflow как инструмент

Проделаем описанное выше шаг за шагом, но для начала убедитесь, что у вас есть gitflow-avh – инструмент для работы с Gitflow. На маке его можно установить с помощью homebrew:

gitflow-avh – это коллекция расширений для git, которая помогает избежать многих повторяющихся операций и вообще делает жизнь проще (это не точно). К примеру, при работе с feature-веткой, утилита проверит, слилась ли она в develop и удалит ее, если все прошло хорошо. Конечно, можно следовать модели Gitflow и самостоятельно, делая операции руками, но ведь проще же использовать готовое решение, так?

Как условие для начала работы, нам нужен git репозиторий. Если вы не начали читать статью с этого места, то у вас один уже есть. Теперь выполним команду git-flow init, как для git.

Далее будет несколько вопросов, но если оставить опции по умолчанию, эта команда просто создаст и назовет ветки в соответствие с моделью Gtiflow.

Когда все закончится, вы увидите, что находитесь на ветке develop. Теперь, создадим новую feature-ветку:

Затем, откроем README.md и внесем изменения. После, сделаем коммит:

Теперь, если мы всем довольны, закончим с этой веткой:

Как можно видеть в выводе в консоли, эта команда сделала следующее:

1. Слила ветки new_docs и develop
2. Удалила new_docs
3. Выполнила переход на ветку develop, чтобы можно было продолжать работу

Допустим, новая фича нас устраивает, она оттестирована и работает исправно. Теперь нам нужно сделать релиз.

Для начала, необходимо выполнить команду:

Здесь можно внести любые последние потенциальные исправления, обновить версию (имеет значение при разработке мобильных приложений) и так далее.

Когда работа закончена, просто напишем:

Вам нужно будет добавить несколько сообщений и меток, а потом утилита сделает следующее:

1. Сольет release и master
2. Пометит release как 2.0
3. Сольет release и develop
4. Удалит release
5. Выполнит переход на develop

Совместная работа

Иногда совместная работа напоминает классику:

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

На гитхабе вы можете добавить кого-то, кого вы знаете в сотрудники в настройках Settings-Collaborators. Приглашенные таким образом участники получат разрешение пушить в ваш репозиторий или вы можете создать команду разработчиков и регулировать уровни доступа от проекта к проекту.

Но даже если вы хорошо знаете человека, вам не всегда может понравится, что кто-то делает коммиты в мастер без вашего ведома. Для таких случаев в github сущестуют pull-request’ы и code review.

Работает это следующим образом: вы делаете какое-то улучшение или фикс на featire-ветке, делаете pull request, кто-то из старших разработчиков, курирующих проект смотрит ваш код (читай, делает code review), возможно, делает какие-то замечания и, в конечном итоге добавляет ваш код в мастер-ветку (или куда-то еще).

Выглядит неплохо, НО

На деле отношение к код ревью может быть разным. Буквально, от

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

И как же к относится к code review? Кончено, это очень важная штука и нужно иметь терпение и делать ревью всех пул реквестов, если речь идет о вашем проекте, например. В долгосрочной перспективе это окупится. И, конечно, легко сказать «just do it», но в некоторых случаях сложившиеся традиции в команде разработчиков могут заставить пересмотреть свое отношение к некоторым вещам.

Проверяем на практике

Создадим новую feature-ветку:

Повторим процесс изменения документа и создания коммита.

А теперь сделаем кое-что новенькое:

То есть, отправим пул-реквест. Если зайти на гитхаб, можно его увидеть.

Теперь, нажмите кнопку Compare & pull request:

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

Здесь можно добавить комментарий к пул-реквесту.

На этом моменте, кто-то из вашей команды должен прийти и проверить ваш код. Вы даже можете дать об этом знать кому следует через инструмент управления проектом, которым ваша команда пользуется (JIRA, Trello, Leankit, Kanbanflow, etc) добавив таск/карточку в соответствующую колонку.

Когда пул-реквест будет подтвержден, вы как автор, должны сделать следующее:

Вы увидите, что Github закрыл пул-реквест и удалил ветку.

что такое гит флоу. Смотреть фото что такое гит флоу. Смотреть картинку что такое гит флоу. Картинка про что такое гит флоу. Фото что такое гит флоу

И как бы то ни было, не стесняйтесь делать пул реквесты, если вам кажется, что ваш код недостаточно хорош: идеального кода не бывает.

Источник

asqd / git-flow.md

Главный репозиторий всегда содержит две главные ветки:

Когда код в ветке develop готов к релизу, то все изменения вливаются в ветку master и помечаются номером релиза.

Featured branches (Фичи)

Порождаются от develop

Вливаются в develop

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

Когда разработка фичи завершена, ветка вливается в develop или удаляется, если фича была неудачной.

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

Когда фича завершена, ветка вливается обратно в develop и попадает в следующий релиз.

Порождаются от develop

Вливаются в develop и master

Название ветки release-*

Новая ветка релиза созается, когда функционал develop ветки почти соответствует новому релизу. Функционал для следующих релизов в неё не включается.

Номер версии определяется в момент создания релизной ветки.

Hotfix branches (Ветки правок)

Порождаются от master

Вливаются в develop и master

Название ветки hotfix-*

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

Внутри своего git репозитория выполнить

Команда создает новую ветку фичи и переключается на неё.

После завершения фичи выполняем

Публикуем фичу в репозитории, чтобы её смогли забрать коллеги:

Получить фичу из origin

Публикуем ветку в origin git flow release publish ###

Источник

Урок № 3. Использование gitflow

Данная статья основывается на следующих материалах:

Gitflow Workflow — это модель рабочего процесса Git, которая была впервые опубликована и популяризована Винсентом Дриссеном из компании nvie. Gitflow Workflow предполагает выстраивание строгой модели ветвления с учетом выпуска проекта. Такая модель обеспечивает надежную основу для управления крупными проектами.

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

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

Содержание

Основные ветки (master) и ветки разработки (develop)

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

Отправка ветки develop выполняется в случае: если данная ветка отсутствует в удаленном репозитории или в нее были внесены изменения.

Для отправки ветки в удаленный репозиторий, необходимо выполнить команду:

Подготовка конфигурации к разработке

переключаемся на ветку develop

вариант 1, из данных git:

создаем пустую ИБ и собираем конфигурацию из файлов каталога src

создаем файл поставки конфигурации (*.cf) из собранной ИБ

вариант 2, из основного хранилища:

создаем поставку из основного хранилища, использованного ранее для начального коммита

Вариант 2 следует использовать, если получить сборку из основного хранилища возможно. Если схема с хранилищами более не используется, тогда используем вариант 1

сохраняем нашу текущую конфигурацию разработки в файл (если есть изменения относительно центрального хранилища)

отключаем поддержку и хранилище (если есть), полностью загружаем конфигурацию из созданного файла поставки

сравнением объединением вкатываем наши изменения из ранее сохраненного *.cf (если ранее сохраняли)

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

Почему нельзя создавать файл поставки из центрального хранилища

Особое внимание уделяйте соответствию платформ. Разные версии выгружают по-разному.

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

Обратите внимание, что объединение веток feature с веткой develop во всех отношениях совершается по модели Feature Branch Workflow. Но работа по Gitflow Workflow на этом не заканчивается.

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

Вот тут стоит учесть один момент, за это время ветка develop могла уйти вперед, поэтому с учетом особенностей сравнения и объединения в 1С следует выполнить следующие действия:

получить все изменения ветки develop

выполнить сборку файла конфигурации из ветки develop (в виде файла поставки)

выполнить обновление конфигурации поддержки в вашей разработке (Конфигурация → Поддержка → Обновить конфигурацию)

после этого следует выполнить коммит в вашу ветку разработки

далее можно выполнять слияние веток

Отдельно стоит разобраться с применением rebase + сравнение объединение, возможно так будет правильнее.

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

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

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

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

Резюме

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

Ключевые идеи, которые нужно запомнить о Gitflow:

Данная модель отлично подходит для организации рабочего процесса на основе релизов.

Работа по модели Gitflow включает создание отдельной ветки для исправлений ошибок в рабочей среде.

Последовательность действий при работе по модели Gitflow:

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

Когда работа над веткой исправления hotfix завершена, она сливается в ветки develop и master после чего должна быть удалена.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *