blob: 44c13fb81badf46b04c8371b8b2332d8a98b0135 [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
raybec0f74cf42010-12-06 13:00:13 -080037 $ wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
Vincent Driessen4f0f5392010-07-10 17:05:27 +020038
Alexander Große26bfbc2010-11-02 14:05:44 +010039### Windows
40#### Using Cygwin
41For Windows users who wish to use the automated install, it is suggested that you install [Cygwin](http://www.cygwin.com/)
42first to install tools like `git`, `util-linux` and `wget` (with those three being packages that can be selected
43during installation). Then simply run this command from a Cygwin shell:
JP Totoea738ef2010-08-20 04:56:57 +080044
Vincent Driessen6f199b92010-11-11 08:57:01 +010045 $ wget -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
JP Totoea738ef2010-08-20 04:56:57 +080046
Alexander Große26bfbc2010-11-02 14:05:44 +010047#### Using msysgit
48This is much like the manual installation below, but there are additional steps required to install some extra tools that
49are not distributed with [msysgit](http://code.google.com/p/msysgit/).
50
Vincent Driessen69f205c2011-02-11 09:15:18 +010051Clone the git-flow sources from Github:
Alexander Große26bfbc2010-11-02 14:05:44 +010052
Vincent Driessen69f205c2011-02-11 09:15:18 +010053 $ git clone --recursive git://github.com/nvie/gitflow.git
Alexander Große26bfbc2010-11-02 14:05:44 +010054
55Copy git-flow's relevant files to your msysgit installation directory:
56
57 $ mkdir /usr/local/bin
58 $ cp git-flow* gitflow* /usr/local/bin/
59 $ cp shFlags/src/shflags /usr/local/bin/gitflow-shFlags
60
61Next up we need to borrow a couple of binaries from [Cygwin](http://www.cygwin.com/). If you don't have Cygwin installed, please
62install it including the `util-linux` package. Apart from `util-linux`'s dependencies, no other packages are required. When you
63finished installation, copy the following files using msysgit's _Git Bash_. We assume the Cygwin's default installation path in C:\cygwin.
64
65 $ cd /c/cygwin/
66 $ cp bin/getopt.exe /usr/local/bin/
67 $ cp bin/cyggcc_s-1.dll /usr/local/bin/
68 $ cp bin/cygiconv-2.dll /usr/local/bin/
69 $ cp bin/cygintl-8.dll /usr/local/bin/
70 $ cp bin/cygwin1.dll /usr/local/bin/
71
72After copying the files above, you can safely uninstall your Cygwin installation by deleting the C:\cygwin directory.
73
74### Manual installation
Vincent Driessen69f205c2011-02-11 09:15:18 +010075If you prefer a manual installation, please use the following instructions:
Vincent Driessen13c94822010-02-15 20:09:02 +010076
Vincent Driessen69f205c2011-02-11 09:15:18 +010077 $ git clone --recursive git://github.com/nvie/gitflow.git
Vincent Driessen13c94822010-02-15 20:09:02 +010078
79Then, you can install `git-flow`, using:
Vincent Driessenf206ba62010-01-26 12:44:41 +010080
Vincent Driessen12c4ab42010-01-26 22:11:19 +010081 $ sudo make install
Vincent Driessenf206ba62010-01-26 12:44:41 +010082
Vincent Driessene0b54c02010-03-19 19:27:38 +010083By default, git-flow will be installed in /usr/local. To change the prefix
84where git-flow will be installed, simply specify it explicitly, using:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010085
Vincent Driessene0b54c02010-03-19 19:27:38 +010086 $ sudo make prefix=/opt/local install
Vincent Driessendd720be2010-01-27 00:00:09 +010087
88Or simply point your `PATH` environment variable to your git-flow checkout
89directory.
Vincent Driessenf206ba62010-01-26 12:44:41 +010090
Vincent Driessenb17b8982010-08-25 21:25:36 +020091*Installation note:*
92git-flow depends on the availability of the command line utility `getopt`,
93which may not be available in your Unix/Linux environment. Please use your
94favorite package manager to install `getopt`. For Cygwin, install the
Vincent Driessen47d1b9d2010-10-08 11:20:00 +020095`util-linux` package to get `getopt`. If you use `apt-get` as your install
96manager, the package name is `opt`.
Vincent Driessenb17b8982010-08-25 21:25:36 +020097
Vincent Driessenf206ba62010-01-26 12:44:41 +010098
Vincent Driessenec0b8542010-07-22 14:57:16 +020099Integration with your shell
100---------------------------
Vincent Driessen25def712010-08-25 21:25:57 +0200101For those who use the [Bash](http://www.gnu.org/software/bash/) or
102[ZSH](http://www.zsh.org) shell, please check out the excellent work on the
Vincent Driessenec0b8542010-07-22 14:57:16 +0200103[git-flow-completion](http://github.com/bobthecow/git-flow-completion) project
104by [bobthecow](http://github.com/bobthecow). It offers tab-completion for all
105git-flow subcommands and branch names.
106
Vincent Driessen25def712010-08-25 21:25:57 +0200107For Windows users, [msysgit](http://code.google.com/p/msysgit/) is a good
108starting place for installing git.
JP Totoac949bf2010-08-20 05:01:52 +0800109
Vincent Driessenec0b8542010-07-22 14:57:16 +0200110
Vincent Driessen11965b32010-09-06 12:19:20 +0200111FAQ
112---
Vincent Driessen61f2c692010-10-31 06:22:36 +0100113See the [FAQ](http://github.com/nvie/gitflow/wiki/FAQ) section of the project
114Wiki.
Vincent Driessencb922282010-09-22 20:38:55 +0200115
Vincent Driessen11965b32010-09-06 12:19:20 +0200116
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100117Please help out
118---------------
Vincent Driessenc49c7932010-02-24 01:22:48 +0100119This project is still under development. Feedback and suggestions are very
120welcome and I encourage you to use the [Issues
121list](http://github.com/nvie/gitflow/issues) on Github to provide that
Vincent Driessenf206ba62010-01-26 12:44:41 +0100122feedback.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100123
Vincent Driessend79a0d42010-04-04 16:11:44 +0200124Feel free to fork this repo and to commit your additions. For a list of all
125contributors, please see the [AUTHORS](AUTHORS) file.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100126
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -0700127Any questions, tips, or general discussion can be posted to our Google group:
Vincent Driessen4d8b3792010-08-19 20:01:30 +0200128[http://groups.google.com/group/gitflow-users](http://groups.google.com/group/gitflow-users)
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -0700129
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100130
Vincent Driessen5d1dbe72010-04-04 15:52:55 +0200131License terms
132-------------
133git-flow is published under the liberal terms of the BSD License, see the
134[LICENSE](LICENSE) file. Although the BSD License does not require you to share
135any modifications you make to the source code, you are very much encouraged and
136invited to contribute back your modifications to the community, preferably
137in a Github fork, of course.
138
139
Vincent Driessenc49c7932010-02-24 01:22:48 +0100140### Initialization
141
142To initialize a new repo with the basic branch structure, use:
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100143
Vincent Driessenc49c7932010-02-24 01:22:48 +0100144 git flow init
Vincent Driessenf9ebb072010-02-22 07:56:04 +0100145
Vincent Driessenc49c7932010-02-24 01:22:48 +0100146This will then interactively prompt you with some questions on which branches
147you would like to use as development and production branches, and how you
148would like your prefixes be named. You may simply press Return on any of
149those questions to accept the (sane) default suggestions.
150
151
152### Creating feature/release/hotfix/support branches
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100153
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100154* To list/start/finish feature branches, use:
155
156 git flow feature
157 git flow feature start <name> [<base>]
158 git flow feature finish <name>
159
Vincent Driessen010252a2010-02-04 10:31:29 +0100160 For feature branches, the `<base>` arg must be a commit on `develop`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100161
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100162* To list/start/finish release branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100163
Vincent Driessen04839ae2010-01-28 01:07:20 +0100164 git flow release
Vincent Driessen010252a2010-02-04 10:31:29 +0100165 git flow release start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100166 git flow release finish <release>
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100167
Vincent Driessen010252a2010-02-04 10:31:29 +0100168 For release branches, the `<base>` arg must be a commit on `develop`.
169
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100170* To list/start/finish hotfix branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100171
Vincent Driessen04839ae2010-01-28 01:07:20 +0100172 git flow hotfix
Vincent Driessen010252a2010-02-04 10:31:29 +0100173 git flow hotfix start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100174 git flow hotfix finish <release>
Vincent Driessen010252a2010-02-04 10:31:29 +0100175
176 For hotfix branches, the `<base>` arg must be a commit on `master`.
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100177
178* To list/start support branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100179
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100180 git flow support
Vincent Driessen010252a2010-02-04 10:31:29 +0100181 git flow support start <release> <base>
182
183 For support branches, the `<base>` arg must be a commit on `master`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100184
Vincent Driessenb33ea8a2010-08-24 13:58:32 +0200185
186Showing your appreciation
187=========================
188A few people already requested it, so now it's here: a Flattr button.
189
190Of course, the best way to show your appreciation for the original
191[blog post](http://nvie.com/git-model) or the git-flow tool itself remains
192contributing to the community. If you'd like to show your appreciation in
193another way, however, consider Flattr'ing me:
194
195[![Flattr this][2]][1]
196
197[1]: http://flattr.com/thing/53771/git-flow
198[2]: http://api.flattr.com/button/button-static-50x60.png