git-flow
========
A collection of Git extensions to provide high-level repository operations
for Vincent Driessen's [branching model](http://nvie.com/archives/323 "original
blog post").


> **IMPORTANT NOTE:**  
> In release 0.2, the order of the arguments has changed to provide a logical
> subcommand hierarchy.


Installing git-flow
-------------------
To install `git-flow` as a real `git` subcommand, run:

	$ sudo make install

By default, this will look for the directory where Git is already installed,
and install the git-flow extension alongside the other Git subcommands. If git
is not on the system's `PATH`, it tries `/usr/libexec/git-core`. To explicitly
override this setting in case you have installed Git in another location, use:

	$ sudo make GIT_EXEC_PATH=/your/custom/path install

You rarely need to override this manually, the default 'make install' should do
fine.

Or simply point your `PATH` environment variable to your git-flow checkout
directory.


Please help out
---------------
This project is still under development. What is available today is merely its
foundation. However, it is functional in its current form and should be usable
under normal use. (Don't try to create multiple release branches next to each
other and stuff like that, yet.)

Feedback and suggestions are very welcome and I encourage you to use the
[Issues list](http://github.com/nvie/gitflow/issues) on Github to provide that
feedback.

Feel free to fork this repo and to commit your additions.


Example uses:
-------------

* To initialize a new repo with the basic branch structure, instead of using
  `git init`, use:
  
  		git flow init

* To list/start/finish feature branches, use:
  
  		git flow feature
  		git flow feature start <name> [<base>]
  		git flow feature finish <name>
  
  (`base` is `develop` by default)

* To list/start/finish release branches, use:
  
  		git flow release
  		git flow release start <release>
  		git flow release finish <release>
  
* To list/start/finish hotfix branches, use:
  
  		git flow hotfix
  		git flow hotfix start <release> [<base-release>]
  		git flow hotfix finish <release>

* To list/start support branches, use:
  
  		git flow support
  		git flow support start <release> [<base-release>]

