Git flow — создать функциональную ветку из другой функциональной ветки

Я использую git flow уже некоторое время. Мне интересно узнать о конкретном случае использования.

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

Предположим, у меня есть тикет PROJ-500, и я создаю для него функциональную ветку.

git flow feature start PROJ-500

Затем я хочу интегрировать билеты с PROJ-501 по PROJ-515 в PROJ-500, прежде чем интегрировать все это в develop. Есть ли способ сделать что-то вроде

git flow feature start PROJ-511 -b PROJ-500

Затем со временем эти подзадачи завершаются, и когда их функция завершена, ветвь объединяется в PROJ-500.

git flow feature finish PROJ-511

Приведенная выше команда объединит PROJ-511 в PROJ-500.

И как только все подзадачи будут выполнены, PROJ-500 будет завершена и объединена в develop.

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


person pymarco    schedule 08.04.2014    source источник
comment
Разве это не так? git flow feature start PROJ-511 PROJ-500? Ссылка, которую вы разместили в комментарии к ответу Дерека, предполагает, что так и должно быть.   -  person Paul Hicks    schedule 08.12.2014


Ответы (4)


Вы можете создать ветку подфункции через

git flow feature start PROJ-511 feature/PROJ-500

Но вы не можете использовать инструмент GitFlow, чтобы объединить ветку обратно в ветку основной функции, потому что, если вы это сделаете

git flow feature finish PROJ-511

функция будет объединена с develop. Следовательно, подфункции не поддерживаются, вам нужно сделать это вручную.

Альтернативы. Однако это требование не ново. Существует открытая проблема, а также разветвленный проект, утверждающий, что поддерживает завершение функций в ветвях, отличных от develop. Я также нашел запрос на включение с реализацией этой функции. Возможно, вы захотите попробовать эту модификацию и посмотреть, довольны ли вы ею.


Обновление от 13 декабря 2019 г. Как только что упомянул в своем комментарии пользователь Matej Kříž, пользователь Tony Chemit написал ответ здесь через несколько месяцев после моего, указывая на gitflow-avh в качестве альтернативы оригинальному продукту gitflow. Он поддерживает подфункции из коробки с синтаксисом, показанным выше. Прошло несколько лет, и в настоящее время версия AVH является частью обычной установки Git для Windows, я только что проверил это на своем локальном компьютере и протестировал опцию подфункции. т.е. для пользователей Windows это работает сразу после установки Git.

person kriegaex    schedule 08.12.2014
comment
@pymarco: Спасибо, что приняли ответ. Мне любопытно, хотя: вы пробовали какие-либо альтернативы? Если да, то какой и каков результат? Работает ли это так, как ожидалось? Возможно, другие читатели смогут чему-то научиться из вашего опыта. :-) - person kriegaex; 09.12.2014
comment
Извините, но я не успел вернуться к этому. Я попробую как-нибудь. - person pymarco; 05.02.2015
comment
Почему минус? Понижающие голоса предназначены для плохо написанных, небрежных ответов, не демонстрирующих никаких признаков исследовательской работы или знаний. В любом случае, спасибо. - person kriegaex; 02.06.2015
comment
Если вы используете версию gitflow-avh, посмотрите ниже на stackoverflow.com/a/29353800/472611. @tony-chemit ответ - person Matěj Kříž; 11.12.2019

Как я понял, gitflow совсем заброшен.

gitflow-avh заменяет его и предлагает эту функцию (см. https://github.com/petervanderdoes/gitflow#creating-featurereleasehotfixsupport-branches).

Я просто пробую это, и это работает хорошо для меня.

git flow feature start PROJ-511 feature/PROJ-500
git flow feature finish PROJ-511

PROJ-511 был объединен с feature/PROJ-500.

person Tony Chemit    schedule 30.03.2015

Как уже упоминалось, мы можем запустить новую функцию, используя любую базовую ветку с

git flow feature start PROJ-511 feature/PROJ-500

И чтобы закончить подфункцию, мы можем временно изменить конфигурацию потока git, чтобы использовать нашу ветку фичи вместо develop:

git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511

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

git flow config set develop develop 
person César    schedule 06.06.2016

Обновление (5 ноября 2020 г.): как отмечено в более новом ответе здесь, это возможно с помощью gitflow-avh, который заменил исходный поток git.

===================

Оригинальный ответ:

Я не думаю, что есть метод для этого в потоке git, но это довольно просто с помощью git.

git checkout PROJ-500
git checkout -b PROJ-511
...do your PROJ-511 work...
git checkout PROJ-500
git merge PROJ-511
git branch -d PROJ-511
person Derek S    schedule 08.04.2014
comment
Спасибо Дерек за ответ. Да, я мог бы следить за этим рабочим процессом. Но gitflow инкапсулирует ряд команд и проверок работоспособности, которые я предпочитаю использовать для разработки подфункций. Например, вот ссылка на git-flow-feature — github.com /nvie/gitflow/blob/develop/git-flow-feature - person pymarco; 10.04.2014