John Green John Green - 2 months ago 6x
Git Question

git flow - how do I pause development on one feature to work on another

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!


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>]