blob: bcb5f8a2c8f69a5232ff182b9c18edfa1ae1b697 [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
JP Totoac949bf2010-08-20 05:01:52 +080015For 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 +080016first to install tools like sh and wget. Then simply follow the command:
17
18 c:\Users\<user> wget -q -O - http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sh
19
Vincent Driessen4f0f5392010-07-10 17:05:27 +020020If you prefer a manual installation, please use the following instructions.
Vincent Driessen13c94822010-02-15 20:09:02 +010021After downloading the sources from Github, also fetch the submodules:
22
23 $ git submodule init
24 $ git submodule update
25
26Then, you can install `git-flow`, using:
Vincent Driessenf206ba62010-01-26 12:44:41 +010027
Vincent Driessen12c4ab42010-01-26 22:11:19 +010028 $ sudo make install
Vincent Driessenf206ba62010-01-26 12:44:41 +010029
Vincent Driessene0b54c02010-03-19 19:27:38 +010030By default, git-flow will be installed in /usr/local. To change the prefix
31where git-flow will be installed, simply specify it explicitly, using:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010032
Vincent Driessene0b54c02010-03-19 19:27:38 +010033 $ sudo make prefix=/opt/local install
Vincent Driessendd720be2010-01-27 00:00:09 +010034
35Or simply point your `PATH` environment variable to your git-flow checkout
36directory.
Vincent Driessenf206ba62010-01-26 12:44:41 +010037
38
Vincent Driessenec0b8542010-07-22 14:57:16 +020039Integration with your shell
40---------------------------
41For those who use the [Bash](http://www.gnu.org/software/bash/) shell, please
42check out the excellent work on the
43[git-flow-completion](http://github.com/bobthecow/git-flow-completion) project
44by [bobthecow](http://github.com/bobthecow). It offers tab-completion for all
45git-flow subcommands and branch names.
46
47If you are a [zsh](http://www.zsh.org) user with some plugin-writing
48experience, please help us develop a
49[completion plugin](http://github.com/bobthecow/git-flow-completion/issues#issue/1)
50for zsh, too. Please contact me on [Github](http://github.com/inbox/new/nvie)
51or [Twitter](http://twitter.com/nvie) to discuss details.
52
JP Totoac949bf2010-08-20 05:01:52 +080053For Windows users, [msysgit](http://code.google.com/p/msysgit/) is a good starting place for installing git.
54
Vincent Driessenec0b8542010-07-22 14:57:16 +020055
Vincent Driessen78c73dc2010-01-21 00:48:44 +010056Please help out
57---------------
Vincent Driessenc49c7932010-02-24 01:22:48 +010058This project is still under development. Feedback and suggestions are very
59welcome and I encourage you to use the [Issues
60list](http://github.com/nvie/gitflow/issues) on Github to provide that
Vincent Driessenf206ba62010-01-26 12:44:41 +010061feedback.
Vincent Driessen78c73dc2010-01-21 00:48:44 +010062
Vincent Driessend79a0d42010-04-04 16:11:44 +020063Feel free to fork this repo and to commit your additions. For a list of all
64contributors, please see the [AUTHORS](AUTHORS) file.
Vincent Driessen78c73dc2010-01-21 00:48:44 +010065
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -070066Any questions, tips, or general discussion can be posted to our Google group:
Vincent Driessen4d8b3792010-08-19 20:01:30 +020067[http://groups.google.com/group/gitflow-users](http://groups.google.com/group/gitflow-users)
Vincent Driessen1fd5bcf2010-07-15 23:21:21 -070068
Vincent Driessen78c73dc2010-01-21 00:48:44 +010069
Vincent Driessen5d1dbe72010-04-04 15:52:55 +020070License terms
71-------------
72git-flow is published under the liberal terms of the BSD License, see the
73[LICENSE](LICENSE) file. Although the BSD License does not require you to share
74any modifications you make to the source code, you are very much encouraged and
75invited to contribute back your modifications to the community, preferably
76in a Github fork, of course.
77
78
Vincent Driessenc49c7932010-02-24 01:22:48 +010079Typical usage:
80--------------
Vincent Driessenb731e6f2010-08-19 20:00:02 +020081For the best introduction to get started to `git flow`, please read Jeff
82Kreeftmeijer's blog post:
83
Vincent Driessen4d8b3792010-08-19 20:01:30 +020084[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 +020085
Vincent Driessen78c73dc2010-01-21 00:48:44 +010086
Vincent Driessenc49c7932010-02-24 01:22:48 +010087### Initialization
88
89To initialize a new repo with the basic branch structure, use:
Vincent Driessen12c4ab42010-01-26 22:11:19 +010090
Vincent Driessenc49c7932010-02-24 01:22:48 +010091 git flow init
Vincent Driessenf9ebb072010-02-22 07:56:04 +010092
Vincent Driessenc49c7932010-02-24 01:22:48 +010093This will then interactively prompt you with some questions on which branches
94you would like to use as development and production branches, and how you
95would like your prefixes be named. You may simply press Return on any of
96those questions to accept the (sane) default suggestions.
97
98
99### Creating feature/release/hotfix/support branches
Vincent Driessen12c4ab42010-01-26 22:11:19 +0100100
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100101* To list/start/finish feature branches, use:
102
103 git flow feature
104 git flow feature start <name> [<base>]
105 git flow feature finish <name>
106
Vincent Driessen010252a2010-02-04 10:31:29 +0100107 For feature branches, the `<base>` arg must be a commit on `develop`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100108
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100109* To list/start/finish release branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100110
Vincent Driessen04839ae2010-01-28 01:07:20 +0100111 git flow release
Vincent Driessen010252a2010-02-04 10:31:29 +0100112 git flow release start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100113 git flow release finish <release>
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100114
Vincent Driessen010252a2010-02-04 10:31:29 +0100115 For release branches, the `<base>` arg must be a commit on `develop`.
116
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100117* To list/start/finish hotfix branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100118
Vincent Driessen04839ae2010-01-28 01:07:20 +0100119 git flow hotfix
Vincent Driessen010252a2010-02-04 10:31:29 +0100120 git flow hotfix start <release> [<base>]
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100121 git flow hotfix finish <release>
Vincent Driessen010252a2010-02-04 10:31:29 +0100122
123 For hotfix branches, the `<base>` arg must be a commit on `master`.
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100124
125* To list/start support branches, use:
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100126
Vincent Driessenc81e7a22010-01-28 00:33:24 +0100127 git flow support
Vincent Driessen010252a2010-02-04 10:31:29 +0100128 git flow support start <release> <base>
129
130 For support branches, the `<base>` arg must be a commit on `master`.
Vincent Driessen78c73dc2010-01-21 00:48:44 +0100131