Reputation: 8195
I having been using git flow
for a while now. I am curious to learn about a specific use case.
For one of my projects I have a ticket for a new website feature. This ticket depends on many sub-tasks. I would like to create a feature branch for the main ticket, and then for each sub-task create a feature branch off of the parent feature branch.
Let's assume I have a ticket PROJ-500 and I create a feature branch for it
git flow feature start PROJ-500
Then I want to integrate tickets PROJ-501
through PROJ-515
into PROJ-500
before integrating the whole thing into develop
. Is there a way for me to do something like
git flow feature start PROJ-511 -b PROJ-500
Then over time these sub-tasks get completed and when their feature is finished, the branch is merged into PROJ-500
.
git flow feature finish PROJ-511
The above command would merge PROJ-511
into PROJ-500
And once all sub-tasks are completed then PROJ-500
will be finished and merged into develop
.
This way the new website feature is integrate into develop as a single unit rather than piecemeal.
Upvotes: 94
Views: 70480
Reputation: 845
Simply you can make it from a base feature or even a branch as you like
git flow feature start new-feature-name original-feature-or-base-branch
Upvotes: 0
Reputation: 3435
Update (November 5, 2020): As noted in the newer answer here, this is possible with gitflow-avh which has replaced the original git flow.
===================
Original Answer:
I don't think there is a method for this in git flow, but it is fairly simple with just 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
Upvotes: 8
Reputation: 67317
You can create a sub-feature branch via
git flow feature start PROJ-511 feature/PROJ-500
But you cannot use the GitFlow tool to merge the branch back into the main feature branch because if you do
git flow feature finish PROJ-511
the feature will be merged into develop
. Ergo sub-features are not supported, you need to do it manually.
Alternatives: The requirement is not new, though. There is an open issue as well as a fork project claiming to support finishing features into branches other than develop
. I also found a pull request with an implementation of that feature. You might want to try that modification and see if you are happy with it.
Update 2019-12-13: As user Matěj Kříž just mentioned in his comment, user Tony Chemit has written an answer here a few months after mine, pointing to gitflow-avh as an alternative to the original gitflow product. It supports sub-features out of the box with the syntax shown above. Some years have passed by and nowadays the AVH edition is part of the normal installation of Git for Windows, I just verified this on my local box and tested the sub-feature option. I.e. for Windows users it just works right after Git installation.
Upvotes: 132
Reputation: 1638
As already mentioned, we can start a new feature using any base branch with
git flow feature start PROJ-511 feature/PROJ-500
And to finish the sub feature we can temporarly change git flow configuration to use our feature branch instead of develop
:
git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511
This way, git flow runs all commands and sanity checks. Finally, To restore config, we can run
git flow config set develop develop
Upvotes: 17
Reputation: 1205
As I understood, gitflow is quite abandoned.
gitflow-avh replaces it and offers this feature (see https://github.com/petervanderdoes/gitflow#creating-featurereleasehotfixsupport-branches).
I just try it and it works well to me.
git flow feature start PROJ-511 feature/PROJ-500
git flow feature finish PROJ-511
PROJ-511 was merged into feature/PROJ-500.
Upvotes: 38