blob: 93daca62e25d03a2d326fd06776fe8943d957725 [file] [log] [blame]
Vincent Driessen6c2d30b2010-01-26 22:18:36 +01001git-flow
2========
Vincent Driessen3770f072010-12-06 14:53:51 -08003![Project status](http://stillmaintained.com/nvie/gitflow.png)
Vincent Driessen12c4ab42010-01-26 22:11:19 +01004A collection of Git extensions to provide high-level repository operations
Vincent Driessen4fc0bc12010-02-24 01:43:04 +01005for Vincent Driessen's [branching model](http://nvie.com/git-model "original
Vincent Driessen78c73dc2010-01-21 00:48:44 +01006blog post").
7
Vincent Driessenf206ba62010-01-26 12:44:41 +01008
Vincent Driessen12c4ab42010-01-26 22:11:19 +01009Installing git-flow
10-------------------
Alexander Große26bfbc2010-11-02 14:05:44 +010011
12### Mac OS
13If you're on a Mac and use [homebrew](http://github.com/mxcl/homebrew), it's simple:
Vincent Driessen149d1542010-10-20 22:11:25 +020014
15 $ brew install git-flow
16
Alexander Große26bfbc2010-11-02 14:05:44 +010017If you're on a Mac and use [MacPorts](http://macports.org/), it's simple:
Vincent Driessen149d1542010-10-20 22:11:25 +020018
19 $ port install git-flow
20
Alexander Große26bfbc2010-11-02 14:05:44 +010021### Linux, etc.
Vincent Driessen149d1542010-10-20 22:11:25 +020022Another easy way to install git-flow is using Rick Osborne's excellent git-flow
23installer, which can be run using the following command:
Vincent Driessen4f0f5392010-07-10 17:05:27 +020024
Vincent Driessen6f199b92010-11-11 08:57:01 +010025 $ wget -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
Vincent Driessen4f0f5392010-07-10 17:05:27 +020026
Alexander Große26bfbc2010-11-02 14:05:44 +010027### Windows
28#### Using Cygwin
29For Windows users who wish to use the automated install, it is suggested that you install [Cygwin](http://www.cygwin.com/)
30first to install tools like `git`, `util-linux` and `wget` (with those three being packages that can be selected
31during installation). Then simply run this command from a Cygwin shell:
JP Totoea738ef2010-08-20 04:56:57 +080032
Vincent Driessen6f199b92010-11-11 08:57:01 +010033 $ wget -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
JP Totoea738ef2010-08-20 04:56:57 +080034
Alexander Große26bfbc2010-11-02 14:05:44 +010035#### Using msysgit
36This is much like the manual installation below, but there are additional steps required to install some extra tools that
37are not distributed with [msysgit](http://code.google.com/p/msysgit/).
38
39After cloning the git-flow sources from Github, also fetch the submodules:
40
41 $ git submodule init
42 $ git submodule update
43
44Copy git-flow's relevant files to your msysgit installation directory:
45
46 $ mkdir /usr/local/bin
47 $ cp git-flow* gitflow* /usr/local/bin/
48 $ cp shFlags/src/shflags /usr/local/bin/gitflow-shFlags
49
50Next up we need to borrow a couple of binaries from [Cygwin](http://www.cygwin.com/). If you don't have Cygwin installed, please
51install it including the `util-linux` package. Apart from `util-linux`'s dependencies, no other packages are required. When you
52finished installation, copy the following files using msysgit's _Git Bash_. We assume the Cygwin's default installation path in C:\cygwin.
53
54 $ cd /c/cygwin/
55 $ cp bin/getopt.exe /usr/local/bin/
56 $ cp bin/cyggcc_s-1.dll /usr/local/bin/
57 $ cp bin/cygiconv-2.dll /usr/local/bin/
58 $ cp bin/cygintl-8.dll /usr/local/bin/
59 $ cp bin/cygwin1.dll /usr/local/bin/
60
61After copying the files above, you can safely uninstall your Cygwin installation by deleting the C:\cygwin directory.
62
63### Manual installation
Vincent Driessen4f0f5392010-07-10 17:05:27 +020064If you prefer a manual installation, please use the following instructions.
Vincent Driessen13c94822010-02-15 20:09:02 +010065After downloading the sources from Github, also fetch the submodules:
66
67 $ git submodule init
68 $ git submodule update
69
70Then, you can install `git-flow`, using:
Vincent Driessenf206ba62010-01-26 12:44:41 +010071
Vincent Driessen12c4ab42010-01-26 22:11:19 +010072 $ sudo make install
Vincent Driessenf206ba62010-01-26 12:44:41 +010073
Vincent Driessene0b54c02010-03-19 19:27:38 +010074By default, git-flow will be installed in /usr/local. To change the prefix
75where git-flow will be installed, simply specify it explicitly, using:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010076
Vincent Driessene0b54c02010-03-19 19:27:38 +010077 $ sudo make prefix=/opt/local install
Vincent Driessendd720be2010-01-27 00:00:09 +010078
79Or simply point your `PATH` environment variable to your git-flow checkout
80directory.
Vincent Driessenf206ba62010-01-26 12:44:41 +010081
Vincent Driessenb17b8982010-08-25 21:25:36 +020082*Installation note:*
83git-flow depends on the availability of the command line utility `getopt`,
84which may not be available in your Unix/Linux environment. Please use your
85favorite package manager to install `getopt`. For Cygwin, install the
Vincent Driessen47d1b9d2010-10-08 11:20:00 +020086`util-linux` package to get `getopt`. If you use `apt-get` as your install
87manager, the package name is `opt`.
Vincent Driessenb17b8982010-08-25 21:25:36 +020088
Vincent Driessenf206ba62010-01-26 12:44:41 +010089
Vincent Driessenec0b8542010-07-22 14:57:16 +020090Integration with your shell
91---------------------------
Vincent Driessen25def712010-08-25 21:25:57 +020092For those who use the [Bash](http://www.gnu.org/software/bash/) or
93[ZSH](http://www.zsh.org) shell, please check out the excellent work on the
Vincent Driessenec0b8542010-07-22 14:57:16 +020094[git-flow-completion](http://github.com/bobthecow/git-flow-completion) project
95by [bobthecow](http://github.com/bobthecow). It offers tab-completion for all
96git-flow subcommands and branch names.
97
Vincent Driessen25def712010-08-25 21:25:57 +020098For Windows users, [msysgit](http://code.google.com/p/msysgit/) is a good
99starting place for installing git.
JP Totoac949bf2010-08-20 05:01:52 +0800100
Vincent Driessenec0b8542010-07-22 14:57:16 +0200101
Vincent Driessen11965b32010-09-06 12:19:20 +0200102FAQ
103---
Vincent Driessen61f2c692010-10-31 06:22:36 +0100104See the [FAQ](http://github.com/nvie/gitflow/wiki/FAQ) section of the project
105Wiki.
Vincent Driessencb922282010-09-22 20:38:55 +0200106
Vincent Driessen11965b32010-09-06 12:19:20 +0200107
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100108Please help out
109---------------
Vincent Driessenc49c7932010-02-24 01:22:48 +0100110This project is still under development. Feedback and suggestions are very
111welcome and I encourage you to use the [Issues
112list](http://github.com/nvie/gitflow/issues) on Github to provide that
Vincent Driessenf206ba62010-01-26 12:44:41 +0100113feedback.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100114
Vincent Driessend79a0d42010-04-04 16:11:44 +0200115Feel free to fork this repo and to commit your additions. For a list of all
116contributors, please see the [AUTHORS](AUTHORS) file.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100117
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -0700118Any questions, tips, or general discussion can be posted to our Google group:
Vincent Driessen4d8b3792010-08-19 20:01:30 +0200119[http://groups.google.com/group/gitflow-users](http://groups.google.com/group/gitflow-users)
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -0700120
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100121
Vincent Driessen5d1dbe72010-04-04 15:52:55 +0200122License terms
123-------------
124git-flow is published under the liberal terms of the BSD License, see the
125[LICENSE](LICENSE) file. Although the BSD License does not require you to share
126any modifications you make to the source code, you are very much encouraged and
127invited to contribute back your modifications to the community, preferably
128in a Github fork, of course.
129
130
Vincent Driessenc49c7932010-02-24 01:22:48 +0100131Typical usage:
132--------------
Vincent Driessenb731e6f2010-08-19 20:00:02 +0200133For the best introduction to get started to `git flow`, please read Jeff
134Kreeftmeijer's blog post:
135
Vincent Driessen4d8b3792010-08-19 20:01:30 +0200136[http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/)
Vincent Driessenb731e6f2010-08-19 20:00:02 +0200137
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100138
Vincent Driessenc49c7932010-02-24 01:22:48 +0100139### Initialization
140
141To initialize a new repo with the basic branch structure, use:
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100142
Vincent Driessenc49c7932010-02-24 01:22:48 +0100143 git flow init
Vincent Driessenf9ebb072010-02-22 07:56:04 +0100144
Vincent Driessenc49c7932010-02-24 01:22:48 +0100145This will then interactively prompt you with some questions on which branches
146you would like to use as development and production branches, and how you
147would like your prefixes be named. You may simply press Return on any of
148those questions to accept the (sane) default suggestions.
149
150
151### Creating feature/release/hotfix/support branches
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100152
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100153* To list/start/finish feature branches, use:
154
155 git flow feature
156 git flow feature start <name> [<base>]
157 git flow feature finish <name>
158
Vincent Driessen010252a2010-02-04 10:31:29 +0100159 For feature branches, the `<base>` arg must be a commit on `develop`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100160
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100161* To list/start/finish release branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100162
Vincent Driessen04839ae2010-01-28 01:07:20 +0100163 git flow release
Vincent Driessen010252a2010-02-04 10:31:29 +0100164 git flow release start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100165 git flow release finish <release>
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100166
Vincent Driessen010252a2010-02-04 10:31:29 +0100167 For release branches, the `<base>` arg must be a commit on `develop`.
168
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100169* To list/start/finish hotfix branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100170
Vincent Driessen04839ae2010-01-28 01:07:20 +0100171 git flow hotfix
Vincent Driessen010252a2010-02-04 10:31:29 +0100172 git flow hotfix start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100173 git flow hotfix finish <release>
Vincent Driessen010252a2010-02-04 10:31:29 +0100174
175 For hotfix branches, the `<base>` arg must be a commit on `master`.
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100176
177* To list/start support branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100178
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100179 git flow support
Vincent Driessen010252a2010-02-04 10:31:29 +0100180 git flow support start <release> <base>
181
182 For support branches, the `<base>` arg must be a commit on `master`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100183
Vincent Driessenb33ea8a2010-08-24 13:58:32 +0200184
185Showing your appreciation
186=========================
187A few people already requested it, so now it's here: a Flattr button.
188
189Of course, the best way to show your appreciation for the original
190[blog post](http://nvie.com/git-model) or the git-flow tool itself remains
191contributing to the community. If you'd like to show your appreciation in
192another way, however, consider Flattr'ing me:
193
194[![Flattr this][2]][1]
195
196[1]: http://flattr.com/thing/53771/git-flow
197[2]: http://api.flattr.com/button/button-static-50x60.png