blob: b3e1df31b24126b1c8350b86ff2652ea30e796fd [file] [log] [blame]
Vincent Driessen877f5fe2010-12-06 14:54:50 -08001git-flow ![Project status](http://stillmaintained.com/nvie/gitflow.png)
Vincent Driessen6c2d30b2010-01-26 22:18:36 +01002========
Vincent Driessen12c4ab42010-01-26 22:11:19 +01003A collection of Git extensions to provide high-level repository operations
Vincent Driessen4fc0bc12010-02-24 01:43:04 +01004for Vincent Driessen's [branching model](http://nvie.com/git-model "original
Vincent Driessen78c73dc2010-01-21 00:48:44 +01005blog post").
6
Vincent Driessenf206ba62010-01-26 12:44:41 +01007
Vincent Driessen553776f2011-01-31 22:43:06 +01008Getting started
9---------------
10For the best introduction to get started with `git flow`, please read Jeff
11Kreeftmeijer's blog post:
12
13[http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/](http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/)
14
15Or have a look at one of these screen casts:
16
17* [A short introduction to git-flow](http://vimeo.com/16018419) (by Mark Derricutt)
18* [On the path with git-flow](http://codesherpas.com/screencasts/on_the_path_gitflow.mov) (by Dave Bock)
19
20
Vincent Driessen12c4ab42010-01-26 22:11:19 +010021Installing git-flow
22-------------------
Alexander Große26bfbc2010-11-02 14:05:44 +010023
24### Mac OS
25If you're on a Mac and use [homebrew](http://github.com/mxcl/homebrew), it's simple:
Vincent Driessen149d1542010-10-20 22:11:25 +020026
27 $ brew install git-flow
28
Alexander Große26bfbc2010-11-02 14:05:44 +010029If you're on a Mac and use [MacPorts](http://macports.org/), it's simple:
Vincent Driessen149d1542010-10-20 22:11:25 +020030
31 $ port install git-flow
32
Alexander Große26bfbc2010-11-02 14:05:44 +010033### Linux, etc.
Vincent Driessen149d1542010-10-20 22:11:25 +020034Another easy way to install git-flow is using Rick Osborne's excellent git-flow
35installer, which can be run using the following command:
Vincent Driessen4f0f5392010-07-10 17:05:27 +020036
Tacit Sawk26293bb2011-06-14 10:51:43 +100037 $ wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo bash
Vincent Driessen4f0f5392010-07-10 17:05:27 +020038
Alexander Große26bfbc2010-11-02 14:05:44 +010039### Windows
Olivier Menguéb52f79e2011-03-20 20:34:39 +010040
41For Windows users, [msysgit](http://code.google.com/p/msysgit/) is a good
42starting place for installing git.
43
Alexander Große26bfbc2010-11-02 14:05:44 +010044#### Using Cygwin
45For Windows users who wish to use the automated install, it is suggested that you install [Cygwin](http://www.cygwin.com/)
46first to install tools like `git`, `util-linux` and `wget` (with those three being packages that can be selected
47during installation). Then simply run this command from a Cygwin shell:
JP Totoea738ef2010-08-20 04:56:57 +080048
Tacit Sawk26293bb2011-06-14 10:51:43 +100049 $ wget -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash
JP Totoea738ef2010-08-20 04:56:57 +080050
Olivier Menguéb52f79e2011-03-20 20:34:39 +010051#### Using [msysgit](http://code.google.com/p/msysgit/)
Mark Borcherdinge73a1d92011-07-08 11:29:10 -050052Download and install `getopt.exe` from the [util-linux package](http://gnuwin32.sourceforge.net/packages/util-linux-ng.htm) into `C:\Program Files\Git\bin`. (Only `getopt.exe`, the others util-linux files are not used). Also install `libintl3.dll` from the Dependencies package, into the same directory.
Alexander Große26bfbc2010-11-02 14:05:44 +010053
Olivier Menguéb52f79e2011-03-20 20:34:39 +010054Clone the git-flow sources from GitHub:
Alexander Große26bfbc2010-11-02 14:05:44 +010055
Vincent Driessen69f205c2011-02-11 09:15:18 +010056 $ git clone --recursive git://github.com/nvie/gitflow.git
Olivier Menguéb52f79e2011-03-20 20:34:39 +010057 $ cd gitflow
Alexander Große26bfbc2010-11-02 14:05:44 +010058
Olivier Menguéb52f79e2011-03-20 20:34:39 +010059Run the `msysgit-install` script from a command-line prompt (you may have to
60run it with "Full Administrator" rights if you installed msysgit with its
61installer):
Alexander Große26bfbc2010-11-02 14:05:44 +010062
Olivier Menguéb52f79e2011-03-20 20:34:39 +010063 C:\gitflow> contrib\msysgit-install.cmd
Alexander Große26bfbc2010-11-02 14:05:44 +010064
65### Manual installation
Vincent Driessen69f205c2011-02-11 09:15:18 +010066If you prefer a manual installation, please use the following instructions:
Vincent Driessen13c94822010-02-15 20:09:02 +010067
Vincent Driessen69f205c2011-02-11 09:15:18 +010068 $ git clone --recursive git://github.com/nvie/gitflow.git
Vincent Driessen13c94822010-02-15 20:09:02 +010069
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 Driessenec0b8542010-07-22 14:57:16 +020098
Vincent Driessen11965b32010-09-06 12:19:20 +020099FAQ
100---
Vincent Driessen61f2c692010-10-31 06:22:36 +0100101See the [FAQ](http://github.com/nvie/gitflow/wiki/FAQ) section of the project
102Wiki.
Vincent Driessencb922282010-09-22 20:38:55 +0200103
Vincent Driessen11965b32010-09-06 12:19:20 +0200104
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100105Please help out
106---------------
Vincent Driessenc49c7932010-02-24 01:22:48 +0100107This project is still under development. Feedback and suggestions are very
108welcome and I encourage you to use the [Issues
109list](http://github.com/nvie/gitflow/issues) on Github to provide that
Vincent Driessenf206ba62010-01-26 12:44:41 +0100110feedback.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100111
Vincent Driessend79a0d42010-04-04 16:11:44 +0200112Feel free to fork this repo and to commit your additions. For a list of all
113contributors, please see the [AUTHORS](AUTHORS) file.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100114
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -0700115Any questions, tips, or general discussion can be posted to our Google group:
Vincent Driessen4d8b3792010-08-19 20:01:30 +0200116[http://groups.google.com/group/gitflow-users](http://groups.google.com/group/gitflow-users)
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -0700117
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100118
Vincent Driessen5d1dbe72010-04-04 15:52:55 +0200119License terms
120-------------
121git-flow is published under the liberal terms of the BSD License, see the
122[LICENSE](LICENSE) file. Although the BSD License does not require you to share
123any modifications you make to the source code, you are very much encouraged and
124invited to contribute back your modifications to the community, preferably
125in a Github fork, of course.
126
127
Vincent Driessenc49c7932010-02-24 01:22:48 +0100128### Initialization
129
130To initialize a new repo with the basic branch structure, use:
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100131
Vincent Driessenc49c7932010-02-24 01:22:48 +0100132 git flow init
Vincent Driessenf9ebb072010-02-22 07:56:04 +0100133
Vincent Driessenc49c7932010-02-24 01:22:48 +0100134This will then interactively prompt you with some questions on which branches
135you would like to use as development and production branches, and how you
136would like your prefixes be named. You may simply press Return on any of
137those questions to accept the (sane) default suggestions.
138
139
140### Creating feature/release/hotfix/support branches
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100141
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100142* To list/start/finish feature branches, use:
143
144 git flow feature
145 git flow feature start <name> [<base>]
146 git flow feature finish <name>
147
Vincent Driessen010252a2010-02-04 10:31:29 +0100148 For feature branches, the `<base>` arg must be a commit on `develop`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100149
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100150* To list/start/finish release branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100151
Vincent Driessen04839ae2010-01-28 01:07:20 +0100152 git flow release
Vincent Driessen010252a2010-02-04 10:31:29 +0100153 git flow release start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100154 git flow release finish <release>
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100155
Vincent Driessen010252a2010-02-04 10:31:29 +0100156 For release branches, the `<base>` arg must be a commit on `develop`.
157
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100158* To list/start/finish hotfix branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100159
Vincent Driessen04839ae2010-01-28 01:07:20 +0100160 git flow hotfix
Vincent Driessen010252a2010-02-04 10:31:29 +0100161 git flow hotfix start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100162 git flow hotfix finish <release>
Vincent Driessen010252a2010-02-04 10:31:29 +0100163
164 For hotfix branches, the `<base>` arg must be a commit on `master`.
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100165
166* To list/start support branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100167
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100168 git flow support
Vincent Driessen010252a2010-02-04 10:31:29 +0100169 git flow support start <release> <base>
170
171 For support branches, the `<base>` arg must be a commit on `master`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100172
Vincent Driessenb33ea8a2010-08-24 13:58:32 +0200173
174Showing your appreciation
175=========================
176A few people already requested it, so now it's here: a Flattr button.
177
178Of course, the best way to show your appreciation for the original
179[blog post](http://nvie.com/git-model) or the git-flow tool itself remains
180contributing to the community. If you'd like to show your appreciation in
181another way, however, consider Flattr'ing me:
182
183[![Flattr this][2]][1]
184
185[1]: http://flattr.com/thing/53771/git-flow
186[2]: http://api.flattr.com/button/button-static-50x60.png