I'm new to git and git flow. I've read all the various pages, blogs, and stackoverflow questions on it,and have been using it in my daily development.
But one issue has been bothering me, I just can't wrap my head around it. I know feature branches are supposed to be small, you start a feature, code a part of it, then finish the feature. This is a daily occurence, I get that. We just make sure that our develop branch is always buildable.
But what happens when I'm in the middle of a feature, it isn't ready to be finished, but work priorities change? I'd like to be able to switch to another feature.
For example, I start a new feature.
$ git flow feature start yak-Speedup
I write code, commit files, etc... and am making good progress on it. But now I need to change what I am working on, mostly like because I need a resource that isn't available and the server coder won't have it ready for a day or two. I can't finish the feature because it will break the develop branch.
I'd like to do something like this:
$ git flow feature pause yak-Speedup $ git flow feature start alpaca-Sheering #write code $ git flow feature finish alpaca-Sheering $ git flow feature resume yak-Speedup
Indeed, the existence of the "git flow feature list" command implies that I can have several features going at the same time. But I don't see how to create or switch between features. Indeed, I'm starting to think that this isn't a git flow issue at all, but a git issue.
I appreciate any help. Thanks!
The GitHub flow branching strategy is a relatively simple workflow that allows smaller teams, or web applications/products that don't require supporting multiple versions, to expedite their work. In GitHub flow, the main branch contains your production-ready code.
Hotfix branches Maintenance or “hotfix” branches are used to quickly patch production releases. Hotfix branches are a lot like release branches and feature branches except they're based on main instead of develop . This is the only branch that should fork directly off of main .
Build your strategy from these three concepts: Use feature branches for all new features and bug fixes. Merge feature branches into the main branch using pull requests. Keep a high quality, up-to-date main branch.
Feature branches are the ones developers create to work on new features. They should always branch off "development." After the feature is complete, the developer should merge the feature back to controller. The next type of supporting branch is the release branch.
You do not need the git flow feature pause yak-Speedup
command (feature pause
doesn't exist anyway). The command you want to use in place of git flow feature resume yak-Speedup
is git flow feature checkout yak-Speedup
; that will get you back on the yak-Speedup
feature branch to continue development.
Executing git flow
displays:
Try 'git flow <subcommand> help' for details.
And executing git flow feature help
displays:
usage: git flow feature [list] [-v] git flow feature start [-F] <name> [<base>] git flow feature finish [-rFk] <name|nameprefix> git flow feature publish <name> git flow feature track <name> git flow feature diff [<name|nameprefix>] git flow feature rebase [-i] [<name|nameprefix>] git flow feature checkout [<name|nameprefix>] git flow feature pull <remote> [<name>]
Late to the party, but my experience is this..I use git in combination with git flow..
git flow feature start foo <<== start #code, hack and COMMIT git checkout develop <<== go back to develop branch.. git flow feature start foo2 <<== start a new feature #code, hack and COMMIT git checkout feature/foo <<== go back to foo. NB: using full branch name
By going back to develop i ensure that I am branching independently from foo and using develop only. I can also do any merging of develop if there has been commits from other features at the time as well....
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With