2 Answers
answered Sep 18, 2015 at 20:16
sschuberthsschuberth
28.6k6 gold badges102 silver badges147 bronze badges
4
-
How do you know it’s based on AVH edition? I couldn’t find any info in the repo about this…
Sep 25, 2018 at 16:01
-
yeah, I just figured
git flow version
shows it too: 1.11.0 (AVH Edition)Sep 25, 2018 at 16:37
-
is it fork with git-flow implemetation too?
Jul 22, 2022 at 12:39
If you have Sourcetree OR if you install Sourcetree, you can find GitFlow options there. This is one of the easiest way to use GitFlow.
Once you active GitFlow from their (shown in the above screenshot), you can use all GitFlow commands from the terminal as well.
answered May 6, 2019 at 6:12
ArifArif
6,1224 gold badges51 silver badges81 bronze badges
2 Answers
answered Sep 18, 2015 at 20:16
sschuberthsschuberth
28.6k6 gold badges102 silver badges147 bronze badges
4
-
How do you know it’s based on AVH edition? I couldn’t find any info in the repo about this…
Sep 25, 2018 at 16:01
-
yeah, I just figured
git flow version
shows it too: 1.11.0 (AVH Edition)Sep 25, 2018 at 16:37
-
is it fork with git-flow implemetation too?
Jul 22, 2022 at 12:39
If you have Sourcetree OR if you install Sourcetree, you can find GitFlow options there. This is one of the easiest way to use GitFlow.
Once you active GitFlow from their (shown in the above screenshot), you can use all GitFlow commands from the terminal as well.
answered May 6, 2019 at 6:12
ArifArif
6,1224 gold badges51 silver badges81 bronze badges
Download and install Git from MSysGit or Git SCM.
Download and install getopt.exe
from the util-linux package into C:\Program Files\Git\bin
. (Only getopt.exe
, the others util-linux files are not used). Also install libintl3.dll
and libiconv2.dll
from the Dependencies packages (libintl and libiconv), into the same directory.
Suppose that Git is installed in the folder
c:\bin\git
and GnuWin32 in the folderc:\bin\GnuWin32
.
Clone the git-flow sources from GitHub:
$ git clone --recursive git://github.com/nvie/gitflow.git
Run the msysgit-install
script from a command-line prompt (you may have to
run it with «Full Administrator» rights if you installed msysgit with its
installer, and ensure you’re running from a Windows command prompt, not MINGW):
cd gitflow
cp c:\bin\GnuWin32\bin\getopt.exe c:\bin\git\bin\getopt.exe
cp c:\bin\GnuWin32\bin\libintl3.dll c:\bin\git\bin\libintl3.dll
cp c:\bin\GnuWin32\bin\libiconv2.dll c:\bin\git\bin\libiconv2.dll
contrib\msysgit-install.cmd c:\bin\git
In Git bash create a symbolic link for git-flow so that you can actually use the $ git flow
command from any location.
ln -s /C/gitflow/git-flow git-flow
Введение
git-flow — это набор расширений git предоставляющий высокоуровневые операции над репозиторием для поддержки модели ветвления Vincent
Driessen.
узнать больше
★ ★ ★
Эта шпаргалка показывает основные способы использования операций git-flow.
★ ★ ★
Общие замечания
- Git flow предоставляет превосходную командную строку со справкой и улучшенными выводом. Внимательно читайте его, чтобы знать, что происходит…
- Клиент для macOS/Windows Sourcetree — отличный GUI для Git — также поддерживает git-flow
- Git-flow основан на слиянии. Для слияния веток фич не используется rebase.
★ ★ ★
Установка
- В первую очередь вам нужна рабочая установка git
- Git flow работает на macOS, Linux и Windows
★ ★ ★
macOS
Homebrew
$ brew install git-flow-avh
Macports
$ port install git-flow-avh
Linux
$ apt-get install git-flow
Windows (Cygwin)
$ wget -q -O — —no-check-certificate
https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
Вам потребуется wget и util-linux для установки git-flow.
Подробные инструкции по установке git flow смотрите на git flow
wiki.
Приступая к работе
Git flow нужно инициализировать, чтобы настроить его для работы с вашим проектом.
★ ★ ★
Инициализация
Для начала использования git-flow проинициализируйте его внутри существующего git-репозитория:
git flow init
Вам придётся ответить на несколько вопросов о способах именования ваших веток.
Рекомендуется оставить значения по умолчанию.
Фичи
- Разработка новых фич для последующих релизов
- Обычно присутствует только в репозиториях разработчиков
★ ★ ★
Начало новой фичи
Разработка новых фич начинается из ветки «develop».
Для начала разработки фичи выполните:
git flow feature start MYFEATURE
Это действие создаёт новую ветку фичи, основанную на ветке «develop», и переключается на неё.
Завершение фичи
Окончание разработки фичи.
Это действие выполняется так:
- Слияние ветки MYFEATURE в «develop»
- Удаление ветки фичи
- Переключение обратно на ветку «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]
При желании вы можете указать [BASE]
-коммит в виде его хеша sha-1, чтобы начать релиз с него.
Этот коммит должен принадлежать ветке «develop».
★ ★ ★
Желательно сразу публиковать ветку релиза после создания, чтобы позволить другим разработчиками выполнять коммиты в ветку релиза.
Это делается так же, как и при публикации фичи, с помощью команды:
git flow release publish RELEASE
Вы также можете отслеживать удалённый релиз с помощью команды git flow release track RELEASE
Завершение релиза
Завершение релиза — один из самых больших шагов в git-ветвлени. При этом происходит несколько действий:
- Ветка релиза сливается в ветку «master»
- Релиз помечается тегом равным его имени
- Ветка релиза сливается обратно в ветку «develop»
- Ветка релиза удаляется
git flow release finish RELEASE
Не забудьте отправить изменения в тегах с помощью команды git push --tags
Исправления
- Исправления нужны в том случае, когда нужно незамедлительно устранить нежелательное состояние продакшн-версии продукта
- Может ответвляться от соответствующего тега на ветке «master», который отмечает выпуск продакшн-версии
★ ★ ★
git flow hotfix start
Как и в случае с другими командами git flow, работа над исправлением начинается так:
git flow hotfix start VERSION [BASENAME]
Аргумент VERSION определяет имя нового, исправленного релиза.
При желании можно указать BASENAME-коммит, от которого произойдёт ответвление.
Завершение исправления
Когда исправление готово, оно сливается обратно в ветки «develop» и «master».
Кроме того, коммит в ветке «master» помечается тегом с версией исправления.
git flow hotfix finish VERSION
Последние замечания
★ ★ ★
- Здесь описаны не все доступные команды, только наиболее важные
- Вы можете продолжать использовать git и все его команды, как обычно, git flow — это просто набор дополнительных инструментов
- Возможности «support»-веток пока в beta-версии, использовать их не рекомендуется
★ ★ ★
В общем-то история будет о том, на что стоит обратить внимание, когда решился использовать git-репозиторий, как его удобно приготовить и зачем нужны все эти плюшки.
Взгляд разработчика, который бился головой, потом снова бился головой, потом придумал как круто не биться головой, а потом посмотрел то, что люди давно придумали, чтобы не биться головой, и в общем-то оказалось пришли мы к одному и тому же.
В качестве исторической справки отмечу, что git это распределенная система управления версиями, а была она изначально создана ни кем иным, как самим Линусом Торвальдсом (по ссылке можно посмотреть как старина Торвальдс фигачит код в ядро, как видно понедельники самые продуктивные дни Линуса) с целью управления разработкой ядра Linux и произошло это в уже не близком 2005 году.
Хватит лирики
В общем-то давайте к практике.
.gitignore
Git по умолчанию пытается отслеживать все файлы появляющиеся в папке (и подпапках) репозитория. Очевидно, что нет никакого смысла складывать в Git библиотеки, которые вероятно вы подтягиваете каким-нибудь менеджером пакетов или например всяческие obj, bin и прочие директории и файлы которые внезапно возникают вокруг вашего кода, но для самого кода ценности никакой не несут.
Именно для таких файлов существует такая штука как .gitignore, позволяющая объяснить git’у, что именно не нужно отслеживать. И, например, ваши Gui сразу же перестанут предлагать вам включить ненужные файлы в индекс, если вы пользуетесь не чистой консолью.
Типичные файлы .gitignore в зависимости от языка или среды разработки вы сможете найти на GitHub в соответствующем проекте.
Git Flow
«Си» позволяет очень просто выстрелить себе в ногу. На «Си++» сделать это сложнее, но, когда вам это удается, ногу отрывает полностью.
Bjarne Stroustrup
Фраза отца С++ в мире разработки характеризует многое. Собственно git это такая штука, которой стрелять в ногу можно бесконечно огромным количеством способом, зависящим в основном от вашей фантазии и психических отклонений.
Но умные люди в принципе уже придумали и описали наиболее типичные и простые в использовании с точки зрения владения кодом и управления способы.
Если кратко, то зовется это все Git Flow, и описано множество раз на просторах безграничного интернета.
Git-flow — это набор расширений git предоставляющий высокоуровневые операции над репозиторием для поддержки модели ветвления Vincent Driessen.
Установка Git flow
Для начала нужно иметь установленный git;
Если с Git все хорошо, то в зависимости от используемой операционной системы можно использовать следующие способы установить git flow.
OS X — Homebrew
$ brew install git-flow
OS X — Macports
$ port install git-flow
Linux
$ apt-get install git-flow
Windows
Все сложно
Windows SourceTree
Данный клиент поддерживает Git Flow и позволяет весьма просто управлять им из Gui-интерфейса «из коробки».
Начало работы
Для начала git flow необходимо инициализировать, настроить его для работы с конкретным проектом, причем это нужно объяснить вашему локальному git, поэтому подобные махинации необходимо повторить на каждой машине разработчика (поправьте меня, если я не прав).
В общем для инициализации нужно использовать команду
git flow init
В случае использования SourceTree все можно сделать из интерфейса (больше не буду отдельно упоминать SourceTree, по ссылке все достаточно подробно и полно).
Feature
Как правило ветки Feature нужны только в репозиториях разработчиков, в них ведется разработка новшеств для последующих релизов.
Ветка типа Feature создается из основной ветки разработки (по умолчанию develop).
git flow feature start featurename
В наименовании фичи можно исходить из потребностей конкретно вашего процесса разработки. Может быть вам будет удобно использовать какой-нибудь идентификатор пользовательской истории из вашего трекера, а может краткое текстовое название. В итоге вы получите такую ветку feature/featurename.
Когда работа над фичей завершена, результаты труда необходимо вернуть в исходную ветку разработки. По сути нужно выполнить следующие действия:
- Выполнить слияние ветки фичи в ветку разработки (feature/featurename в develop в моем примере).
- Переключиться обратно в ветку разработки.
- Удалить ветки фичи.
git flow feature finish featurename
Если работа над фичей идет совместно с коллегами — опубликуйте ёё на удаленном севере.
git glow feature publish featurename
Соответственно чтобы получить кем-то опубликованную фичу необходимо выполнить
git flow feature pull origin featurename
Можно отслеживать фичу в репозитории origin выполнив
git flow feature track featurename
Release
Ветка используется для подготовки нового релиза продукта. Используется как правило перед выпуском новой версии для устранения мелких недочетов, багов и стабилизации решения, а так же позволяет подготавливать различные метаданные для релиза.
Для начала релиза
git flow release
git flow release start RELEASE [BASE]
Где [BASE] вы можете указать при желании в виде sha-1 хеша коммита из которого нужно начать релиз. Этот коммит должен обязательно принадлежать ветки разработки.
Конечно же если вы работаете в команде, рекомендую сразу опубликовать ветку
git flow release publish RELEASE
И так же по аналогии для отслеживания нужно использовать
git flow release track RELEASE
Завершение релиза один из наиболее сложных и важных шагов всего процесса ветвления в ходе которого происходят следующие действия:
- Ветка релиза сливается в ветку мастер
- Рализ помечается тегом равным его имени
- Ветка рилаза сливается обратно в ветку разработки
- Ветка релиза удаляется
git flow release finish RELEASE
Чтобы опубликовать тэги
git push --tags
Исправления
Исправления нам необходимы в том случае, когда требуется срочное изменение состояния продакшн-версии разрабатываемого продукта. Как вы понимаете она у нас находится в ветке master и помечена тэгом версии, соответственно мы ветвим hotfix от тега на ветке мастер.
git flow hotfix start VERSION [BASENAME]
Version — определяет имя нового исправленного релиза.
[Basename] — не обязательный аргумент, указывающий на коммит, от которого произойдет ветвление.
Завершение исправления выглядит так:
git flow hotfix finish VERSION
В этот момент оно сливается в ветки develop и master, коммит в ветке master помечается тегом с версией исправления.
Резюме
Выше приведены не все возможности и не все команды git-flow, кроме того использовать git со всеми его командами возможно и далее, т.к. git flow это просто набор инструментов упрощающих ветвление.
На самом деле самое важное с фундаментальной точки зрения описано в самой модели ветвления, принципы которой можно использовать и не прибегая к помощи git-flow.
Думаю в ближайшее время подготовлю перевод этой статьи.
Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.