Git flow - створити гілку об’єкта з іншої гілки об’єктів


85

Я використовую git flowвже деякий час. Мені цікаво дізнатись про конкретний випадок використання.

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

Припустимо, у мене є квиток PROJ-500, і я створив для нього гілку функцій

git flow feature start PROJ-500

Тоді я хочу , щоб інтегрувати квитки PROJ-501через PROJ-515INTO , 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.

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


Хіба це не робить цього? git flow feature start PROJ-511 PROJ-500? Посилання, яке ви опублікували в коментарі на відповідь DerekS, наводить на думку, що так і має бути.
Пол Хікс,

Відповіді:


117

Ви можете створити гілку підфункції через

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

Але ви не можете використовувати інструмент GitFlow, щоб об'єднати гілку назад в основну гілку функції, тому що якщо ви це зробите

git flow feature finish PROJ-511

функція буде об’єднана develop. Підфункції Ergo не підтримуються , це потрібно робити вручну.

Альтернативи: Однак вимога не нова. Існує відкрите питання , а також проект вилки, який стверджує, що підтримує функції обробки в інші гілки, ніж develop. Я також знайшов запит на витяг із реалізацією цієї функції. Можливо, ви захочете спробувати цю модифікацію і подивитися, чи задоволені ви нею.


Оновлення 2019-12-13: Як користувач Matěj Kříž щойно згадав у своєму коментарі, користувач Tony Chemit написав тут відповідь через кілька місяців після моєї, вказуючи на gitflow-avh як альтернативу оригінальному продукту gitflow. Він підтримує допоміжні функції з коробки з синтаксисом, показаним вище. Минуло кілька років, і на сьогоднішній день видання AVH є частиною звичайної інсталяції Git для Windows, я щойно перевірив це на своєму локальному ящику та протестував опцію додаткової функції. Тобто для користувачів Windows це просто працює відразу після встановлення Git.


1
@pymarco: Дякую, що прийняли відповідь. Мені цікаво: Ви пробували якусь із альтернатив? Якщо так, то який і який результат? Чи працює це, як очікувалося? Можливо, інші читачі можуть навчитися чомусь із вашого досвіду. :-)
kriegaex

Вибачте, але я не встиг до цього повернутися. Я спробую в якийсь момент.
pymarco

3
Чому голос проти? Протиголосники призначені для використання для погано написаних, недбалих відповідей, що не мають ознак дослідницьких зусиль чи знань. У будь-якому разі, дякую.
kriegaex

Якщо ви використовуєте gitflow-AVH версія подивіться нижче на stackoverflow.com/a/29353800/472611 @ Тоні-chemit відповідь
Матей KŘÍŽ

31

Як я зрозумів, 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 .


11

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

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

А для завершення допоміжної функції ми можемо тимчасово змінити конфігурацію git flow, щоб використовувати нашу гілку функції замість develop:

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

Таким чином, git flow запускає всі команди та перевірку розумності. Нарешті, щоб відновити конфігурацію, ми можемо запустити

git flow config set develop develop 

9

Оновлення (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

2
Дякую Дереку за відповідь. Так, я міг би стежити за цим робочим процесом. Але git flow містить кілька команд і перевірок розумності, які я вважаю за краще використовувати для розробки підфункцій. Наприклад, ось посилання на git-flow-feature - github.com/nvie/gitflow/blob/develop/git-flow-feature
pymarco
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.