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


Release 0.1
-----------
A quick release of version 0.1 has arrived. The main scripts are functional and
should be usable under "normal" use.

There have barely been any real-world tests, but I encourage you to start using
it actively. [Feedback](http://github.com/nvie/gitflow/issues) is also very
welcome. See the "Please help out" section below, also.

**Make sure to validate the modifications to your repo after running any of the
`git-flow` commands, before pushing them permanently.**


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 start a new feature branch, use:
  
  		git flow start feature <name> [<base>]
  		git flow start feature foo-support
  
  `base` is `develop` by default.

* To finish this feature and have it merged into `develop`, use:
  
  		git flow finish feature <name>
  		git flow finish feature foo-support
  
* To start a new release branch for 2.0, based on the 1.1 production release, use:
  
  		git flow start release <release>
  		git flow start release 2.0
  
* To finish the release branch (i.e. to make an actual production release), use:
  
  		git flow finish release <release>
  		git flow finish release 2.0
  
* To start a new hotfix branch for 2.1, based on the 2.0 production release, use:
  
  		git flow start hotfix <release> [<base-release>]
  		git flow start hotfix 2.1 2.0
  
* To finish the hotfix branch, use:
  
  		git flow finish hotfix <release>
  		git flow finish hotfix 2.1

