Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

git

git-flow

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!

like image 528
John Green Avatar asked Dec 20 '11 20:12

John Green


People also ask

What is Git flow branching strategy?

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.

What is hotfix in Git?

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 .

What is the best branching strategy in Git?

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.

What is the difference between feature branch and release 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.


2 Answers

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>] 
like image 61
Dan Cruz Avatar answered Oct 09 '22 02:10

Dan Cruz


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

like image 27
angryITguy Avatar answered Oct 09 '22 03:10

angryITguy