blob: 9c510c8f6650be9b06ede4c210307a0759646534 [file] [log] [blame]
Vincent Driessen6c2d30b2010-01-26 22:18:36 +01001git-flow
2========
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 Driessen12c4ab42010-01-26 22:11:19 +01008Installing git-flow
9-------------------
Vincent Driessen149d1542010-10-20 22:11:25 +020010If you're on a Mac and use "homebrew":http://github.com/mxcl/homebrew, it's simple:
11
12 $ brew install git-flow
13
14If you're on a Mac and use "MacPorts":http://macports.org/, it's simple:
15
16 $ port install git-flow
17
18Another easy way to install git-flow is using Rick Osborne's excellent git-flow
19installer, which can be run using the following command:
Vincent Driessen4f0f5392010-07-10 17:05:27 +020020
21 $ wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
22
eddie ciancic2130522010-09-05 01:19:35 +080023For __Windows__ users who wish to use the automated install, it is suggested that you install [Cygwin](http://www.cygwin.com/)
JP Totoea738ef2010-08-20 04:56:57 +080024first to install tools like sh and wget. Then simply follow the command:
25
Vincent Driessen149d1542010-10-20 22:11:25 +020026 C:\> wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
JP Totoea738ef2010-08-20 04:56:57 +080027
Vincent Driessen4f0f5392010-07-10 17:05:27 +020028If you prefer a manual installation, please use the following instructions.
Vincent Driessen13c94822010-02-15 20:09:02 +010029After downloading the sources from Github, also fetch the submodules:
30
31 $ git submodule init
32 $ git submodule update
33
34Then, you can install `git-flow`, using:
Vincent Driessenf206ba62010-01-26 12:44:41 +010035
Vincent Driessen12c4ab42010-01-26 22:11:19 +010036 $ sudo make install
Vincent Driessenf206ba62010-01-26 12:44:41 +010037
Vincent Driessene0b54c02010-03-19 19:27:38 +010038By default, git-flow will be installed in /usr/local. To change the prefix
39where git-flow will be installed, simply specify it explicitly, using:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010040
Vincent Driessene0b54c02010-03-19 19:27:38 +010041 $ sudo make prefix=/opt/local install
Vincent Driessendd720be2010-01-27 00:00:09 +010042
43Or simply point your `PATH` environment variable to your git-flow checkout
44directory.
Vincent Driessenf206ba62010-01-26 12:44:41 +010045
Vincent Driessenb17b8982010-08-25 21:25:36 +020046*Installation note:*
47git-flow depends on the availability of the command line utility `getopt`,
48which may not be available in your Unix/Linux environment. Please use your
49favorite package manager to install `getopt`. For Cygwin, install the
Vincent Driessen47d1b9d2010-10-08 11:20:00 +020050`util-linux` package to get `getopt`. If you use `apt-get` as your install
51manager, the package name is `opt`.
Vincent Driessenb17b8982010-08-25 21:25:36 +020052
Vincent Driessenf206ba62010-01-26 12:44:41 +010053
Vincent Driessenec0b8542010-07-22 14:57:16 +020054Integration with your shell
55---------------------------
Vincent Driessen25def712010-08-25 21:25:57 +020056For those who use the [Bash](http://www.gnu.org/software/bash/) or
57[ZSH](http://www.zsh.org) shell, please check out the excellent work on the
Vincent Driessenec0b8542010-07-22 14:57:16 +020058[git-flow-completion](http://github.com/bobthecow/git-flow-completion) project
59by [bobthecow](http://github.com/bobthecow). It offers tab-completion for all
60git-flow subcommands and branch names.
61
Vincent Driessen25def712010-08-25 21:25:57 +020062For Windows users, [msysgit](http://code.google.com/p/msysgit/) is a good
63starting place for installing git.
JP Totoac949bf2010-08-20 05:01:52 +080064
Vincent Driessenec0b8542010-07-22 14:57:16 +020065
Vincent Driessen11965b32010-09-06 12:19:20 +020066FAQ
67---
Vincent Driessen61f2c692010-10-31 06:22:36 +010068See the [FAQ](http://github.com/nvie/gitflow/wiki/FAQ) section of the project
69Wiki.
Vincent Driessencb922282010-09-22 20:38:55 +020070
Vincent Driessen11965b32010-09-06 12:19:20 +020071
Vincent Driessen78c73dc2010-01-21 00:48:44 +010072Please help out
73---------------
Vincent Driessenc49c7932010-02-24 01:22:48 +010074This project is still under development. Feedback and suggestions are very
75welcome and I encourage you to use the [Issues
76list](http://github.com/nvie/gitflow/issues) on Github to provide that
Vincent Driessenf206ba62010-01-26 12:44:41 +010077feedback.
Vincent Driessen78c73dc2010-01-21 00:48:44 +010078
Vincent Driessend79a0d42010-04-04 16:11:44 +020079Feel free to fork this repo and to commit your additions. For a list of all
80contributors, please see the [AUTHORS](AUTHORS) file.
Vincent Driessen78c73dc2010-01-21 00:48:44 +010081
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -070082Any questions, tips, or general discussion can be posted to our Google group:
Vincent Driessen4d8b3792010-08-19 20:01:30 +020083[http://groups.google.com/group/gitflow-users](http://groups.google.com/group/gitflow-users)
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -070084
Vincent Driessen78c73dc2010-01-21 00:48:44 +010085
Vincent Driessen5d1dbe72010-04-04 15:52:55 +020086License terms
87-------------
88git-flow is published under the liberal terms of the BSD License, see the
89[LICENSE](LICENSE) file. Although the BSD License does not require you to share
90any modifications you make to the source code, you are very much encouraged and
91invited to contribute back your modifications to the community, preferably
92in a Github fork, of course.
93
94
Vincent Driessenc49c7932010-02-24 01:22:48 +010095Typical usage:
96--------------
Vincent Driessenb731e6f2010-08-19 20:00:02 +020097For the best introduction to get started to `git flow`, please read Jeff
98Kreeftmeijer's blog post:
99
Vincent Driessen4d8b3792010-08-19 20:01:30 +0200100[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 +0200101
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100102
Vincent Driessenc49c7932010-02-24 01:22:48 +0100103### Initialization
104
105To initialize a new repo with the basic branch structure, use:
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100106
Vincent Driessenc49c7932010-02-24 01:22:48 +0100107 git flow init
Vincent Driessenf9ebb072010-02-22 07:56:04 +0100108
Vincent Driessenc49c7932010-02-24 01:22:48 +0100109This will then interactively prompt you with some questions on which branches
110you would like to use as development and production branches, and how you
111would like your prefixes be named. You may simply press Return on any of
112those questions to accept the (sane) default suggestions.
113
114
115### Creating feature/release/hotfix/support branches
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100116
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100117* To list/start/finish feature branches, use:
118
119 git flow feature
120 git flow feature start <name> [<base>]
121 git flow feature finish <name>
122
Vincent Driessen010252a2010-02-04 10:31:29 +0100123 For feature branches, the `<base>` arg must be a commit on `develop`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100124
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100125* To list/start/finish release branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100126
Vincent Driessen04839ae2010-01-28 01:07:20 +0100127 git flow release
Vincent Driessen010252a2010-02-04 10:31:29 +0100128 git flow release start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100129 git flow release finish <release>
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100130
Vincent Driessen010252a2010-02-04 10:31:29 +0100131 For release branches, the `<base>` arg must be a commit on `develop`.
132
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100133* To list/start/finish hotfix branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100134
Vincent Driessen04839ae2010-01-28 01:07:20 +0100135 git flow hotfix
Vincent Driessen010252a2010-02-04 10:31:29 +0100136 git flow hotfix start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100137 git flow hotfix finish <release>
Vincent Driessen010252a2010-02-04 10:31:29 +0100138
139 For hotfix branches, the `<base>` arg must be a commit on `master`.
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100140
141* To list/start support branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100142
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100143 git flow support
Vincent Driessen010252a2010-02-04 10:31:29 +0100144 git flow support start <release> <base>
145
146 For support branches, the `<base>` arg must be a commit on `master`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100147
Vincent Driessenb33ea8a2010-08-24 13:58:32 +0200148
149Showing your appreciation
150=========================
151A few people already requested it, so now it's here: a Flattr button.
152
153Of course, the best way to show your appreciation for the original
154[blog post](http://nvie.com/git-model) or the git-flow tool itself remains
155contributing to the community. If you'd like to show your appreciation in
156another way, however, consider Flattr'ing me:
157
158[![Flattr this][2]][1]
159
160[1]: http://flattr.com/thing/53771/git-flow
161[2]: http://api.flattr.com/button/button-static-50x60.png