blob: 4150e07c62bcc78dbb2d39235164df3522ac940e [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 Driessen4f0f5392010-07-10 17:05:27 +020010The easiest way to install git-flow is using Rick Osborne's excellent
11git-flow installer, which can be run using the following command:
12
13 $ wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
14
eddie ciancic2130522010-09-05 01:19:35 +080015For __OSX__ users, the `wget` command isn't available by default, but `curl` is, so you can run:
16
17 $ curl http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo sh
18
19For __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 +080020first to install tools like sh and wget. Then simply follow the command:
21
22 c:\Users\<user> wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
23
Vincent Driessen4f0f5392010-07-10 17:05:27 +020024If you prefer a manual installation, please use the following instructions.
Vincent Driessen13c94822010-02-15 20:09:02 +010025After downloading the sources from Github, also fetch the submodules:
26
27 $ git submodule init
28 $ git submodule update
29
30Then, you can install `git-flow`, using:
Vincent Driessenf206ba62010-01-26 12:44:41 +010031
Vincent Driessen12c4ab42010-01-26 22:11:19 +010032 $ sudo make install
Vincent Driessenf206ba62010-01-26 12:44:41 +010033
Vincent Driessene0b54c02010-03-19 19:27:38 +010034By default, git-flow will be installed in /usr/local. To change the prefix
35where git-flow will be installed, simply specify it explicitly, using:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010036
Vincent Driessene0b54c02010-03-19 19:27:38 +010037 $ sudo make prefix=/opt/local install
Vincent Driessendd720be2010-01-27 00:00:09 +010038
39Or simply point your `PATH` environment variable to your git-flow checkout
40directory.
Vincent Driessenf206ba62010-01-26 12:44:41 +010041
Vincent Driessenb17b8982010-08-25 21:25:36 +020042*Installation note:*
43git-flow depends on the availability of the command line utility `getopt`,
44which may not be available in your Unix/Linux environment. Please use your
45favorite package manager to install `getopt`. For Cygwin, install the
46`util-linux` package to get `getopt`.
47
Vincent Driessenf206ba62010-01-26 12:44:41 +010048
Vincent Driessenec0b8542010-07-22 14:57:16 +020049Integration with your shell
50---------------------------
Vincent Driessen25def712010-08-25 21:25:57 +020051For those who use the [Bash](http://www.gnu.org/software/bash/) or
52[ZSH](http://www.zsh.org) shell, please check out the excellent work on the
Vincent Driessenec0b8542010-07-22 14:57:16 +020053[git-flow-completion](http://github.com/bobthecow/git-flow-completion) project
54by [bobthecow](http://github.com/bobthecow). It offers tab-completion for all
55git-flow subcommands and branch names.
56
Vincent Driessen25def712010-08-25 21:25:57 +020057For Windows users, [msysgit](http://code.google.com/p/msysgit/) is a good
58starting place for installing git.
JP Totoac949bf2010-08-20 05:01:52 +080059
Vincent Driessenec0b8542010-07-22 14:57:16 +020060
Vincent Driessen78c73dc2010-01-21 00:48:44 +010061Please help out
62---------------
Vincent Driessenc49c7932010-02-24 01:22:48 +010063This project is still under development. Feedback and suggestions are very
64welcome and I encourage you to use the [Issues
65list](http://github.com/nvie/gitflow/issues) on Github to provide that
Vincent Driessenf206ba62010-01-26 12:44:41 +010066feedback.
Vincent Driessen78c73dc2010-01-21 00:48:44 +010067
Vincent Driessend79a0d42010-04-04 16:11:44 +020068Feel free to fork this repo and to commit your additions. For a list of all
69contributors, please see the [AUTHORS](AUTHORS) file.
Vincent Driessen78c73dc2010-01-21 00:48:44 +010070
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -070071Any questions, tips, or general discussion can be posted to our Google group:
Vincent Driessen4d8b3792010-08-19 20:01:30 +020072[http://groups.google.com/group/gitflow-users](http://groups.google.com/group/gitflow-users)
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -070073
Vincent Driessen78c73dc2010-01-21 00:48:44 +010074
Vincent Driessen5d1dbe72010-04-04 15:52:55 +020075License terms
76-------------
77git-flow is published under the liberal terms of the BSD License, see the
78[LICENSE](LICENSE) file. Although the BSD License does not require you to share
79any modifications you make to the source code, you are very much encouraged and
80invited to contribute back your modifications to the community, preferably
81in a Github fork, of course.
82
83
Vincent Driessenc49c7932010-02-24 01:22:48 +010084Typical usage:
85--------------
Vincent Driessenb731e6f2010-08-19 20:00:02 +020086For the best introduction to get started to `git flow`, please read Jeff
87Kreeftmeijer's blog post:
88
Vincent Driessen4d8b3792010-08-19 20:01:30 +020089[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 +020090
Vincent Driessen78c73dc2010-01-21 00:48:44 +010091
Vincent Driessenc49c7932010-02-24 01:22:48 +010092### Initialization
93
94To initialize a new repo with the basic branch structure, use:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010095
Vincent Driessenc49c7932010-02-24 01:22:48 +010096 git flow init
Vincent Driessenf9ebb072010-02-22 07:56:04 +010097
Vincent Driessenc49c7932010-02-24 01:22:48 +010098This will then interactively prompt you with some questions on which branches
99you would like to use as development and production branches, and how you
100would like your prefixes be named. You may simply press Return on any of
101those questions to accept the (sane) default suggestions.
102
103
104### Creating feature/release/hotfix/support branches
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100105
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100106* To list/start/finish feature branches, use:
107
108 git flow feature
109 git flow feature start <name> [<base>]
110 git flow feature finish <name>
111
Vincent Driessen010252a2010-02-04 10:31:29 +0100112 For feature branches, the `<base>` arg must be a commit on `develop`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100113
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100114* To list/start/finish release branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100115
Vincent Driessen04839ae2010-01-28 01:07:20 +0100116 git flow release
Vincent Driessen010252a2010-02-04 10:31:29 +0100117 git flow release start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100118 git flow release finish <release>
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100119
Vincent Driessen010252a2010-02-04 10:31:29 +0100120 For release branches, the `<base>` arg must be a commit on `develop`.
121
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100122* To list/start/finish hotfix branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100123
Vincent Driessen04839ae2010-01-28 01:07:20 +0100124 git flow hotfix
Vincent Driessen010252a2010-02-04 10:31:29 +0100125 git flow hotfix start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100126 git flow hotfix finish <release>
Vincent Driessen010252a2010-02-04 10:31:29 +0100127
128 For hotfix branches, the `<base>` arg must be a commit on `master`.
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100129
130* To list/start support branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100131
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100132 git flow support
Vincent Driessen010252a2010-02-04 10:31:29 +0100133 git flow support start <release> <base>
134
135 For support branches, the `<base>` arg must be a commit on `master`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100136
Vincent Driessenb33ea8a2010-08-24 13:58:32 +0200137
138Showing your appreciation
139=========================
140A few people already requested it, so now it's here: a Flattr button.
141
142Of course, the best way to show your appreciation for the original
143[blog post](http://nvie.com/git-model) or the git-flow tool itself remains
144contributing to the community. If you'd like to show your appreciation in
145another way, however, consider Flattr'ing me:
146
147[![Flattr this][2]][1]
148
149[1]: http://flattr.com/thing/53771/git-flow
150[2]: http://api.flattr.com/button/button-static-50x60.png