blob: ae201deb7af44c61e793ab408e916c5b6520800d [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-branch(1)
2=============
3
4NAME
5----
Junio C Hamano7c73c662007-01-19 00:37:506git-branch - List, create, or delete branches
Junio C Hamano1a4e8412005-12-27 08:17:237
8SYNOPSIS
9--------
Junio C Hamano2b135272006-03-18 07:45:4210[verse]
Junio C Hamano38ddcce2008-07-15 15:49:0311'git branch' [--color | --no-color] [-r | -a]
12[-v [--abbrev=<length> | --no-abbrev]]
13[(--merged | --no-merged | --contains) [<commit>]]
Junio C Hamanofce7c7e2008-07-02 03:06:3814'git branch' [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
15'git branch' (-m | -M) [<oldbranch>] <newbranch>
16'git branch' (-d | -D) [-r] <branchname>...
Junio C Hamano1a4e8412005-12-27 08:17:2317
18DESCRIPTION
19-----------
Junio C Hamano38ddcce2008-07-15 15:49:0320
Junio C Hamanofd83b8e2009-03-22 08:21:4121With no arguments, existing branches are listed and the current branch will
Junio C Hamano38ddcce2008-07-15 15:49:0322be highlighted with an asterisk. Option `-r` causes the remote-tracking
23branches to be listed, and option `-a` shows both.
24
Junio C Hamanofd83b8e2009-03-22 08:21:4125With `--contains`, shows only the branches that contain the named commit
26(in other words, the branches whose tip commits are descendants of the
Junio C Hamano38ddcce2008-07-15 15:49:0327named commit). With `--merged`, only branches merged into the named
28commit (i.e. the branches whose tip commits are reachable from the named
29commit) will be listed. With `--no-merged` only branches not merged into
Junio C Hamanofd83b8e2009-03-22 08:21:4130the named commit will be listed. If the <commit> argument is missing it
31defaults to 'HEAD' (i.e. the tip of the current branch).
Junio C Hamano1a4e8412005-12-27 08:17:2332
Junio C Hamanofd83b8e2009-03-22 08:21:4133In the command's second form, a new branch named <branchname> will be created.
Junio C Hamanoc8d88c22006-04-29 07:02:0134It will start out with a head equal to the one given as <start-point>.
35If no <start-point> is given, the branch will be created with a head
36equal to that of the currently checked out branch.
37
Junio C Hamano1b50ce92007-10-03 12:05:5338Note that this will create the new branch, but it will not switch the
39working tree to it; use "git checkout <newbranch>" to switch to the
40new branch.
41
Junio C Hamano9c334152008-02-12 03:18:5242When a local branch is started off a remote branch, git sets up the
Junio C Hamanoba4b9282008-07-06 05:20:3143branch so that 'git-pull' will appropriately merge from
Junio C Hamano24bc09a2008-02-28 00:27:4444the remote branch. This behavior may be changed via the global
45`branch.autosetupmerge` configuration flag. That setting can be
46overridden by using the `--track` and `--no-track` options.
Junio C Hamano103ad7f2007-03-14 11:19:2647
Junio C Hamanoe7935c42006-12-13 21:32:1748With a '-m' or '-M' option, <oldbranch> will be renamed to <newbranch>.
49If <oldbranch> had a corresponding reflog, it is renamed to match
50<newbranch>, and a reflog entry is created to remember the branch
51renaming. If <newbranch> exists, -M must be used to force the rename
52to happen.
53
Junio C Hamanoc8d88c22006-04-29 07:02:0154With a `-d` or `-D` option, `<branchname>` will be deleted. You may
Junio C Hamano341071d2006-06-04 07:24:4855specify more than one branch for deletion. If the branch currently
Junio C Hamano258e4412007-11-29 02:28:3256has a reflog then the reflog will also be deleted.
57
58Use -r together with -d to delete remote-tracking branches. Note, that it
59only makes sense to delete remote-tracking branches if they no longer exist
Junio C Hamanofd83b8e2009-03-22 08:21:4160in the remote repository or if 'git-fetch' was configured not to fetch
61them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a
62way to clean up all obsolete remote-tracking branches.
Junio C Hamano2b135272006-03-18 07:45:4263
64
Junio C Hamano1a4e8412005-12-27 08:17:2365OPTIONS
66-------
67-d::
Junio C Hamano258e4412007-11-29 02:28:3268Delete a branch. The branch must be fully merged in HEAD.
Junio C Hamano1a4e8412005-12-27 08:17:2369
70-D::
Junio C Hamano258e4412007-11-29 02:28:3271Delete a branch irrespective of its merged status.
Junio C Hamano1a4e8412005-12-27 08:17:2372
Junio C Hamano341071d2006-06-04 07:24:4873-l::
Junio C Hamano1d90cb02007-07-03 07:05:3174Create the branch's reflog. This activates recording of
75all changes made to the branch ref, enabling use of date
76based sha1 expressions such as "<branchname>@\{yesterday}".
Junio C Hamano341071d2006-06-04 07:24:4877
Junio C Hamano560a1f62006-01-30 04:19:5778-f::
Junio C Hamanoea82cff2009-03-18 01:54:4879Reset <branchname> to <startpoint> if <branchname> exists
80already. Without `-f` 'git-branch' refuses to change an existing branch.
Junio C Hamanoc8d88c22006-04-29 07:02:0181
Junio C Hamanoe7935c42006-12-13 21:32:1782-m::
83Move/rename a branch and the corresponding reflog.
84
85-M::
Junio C Hamanofd83b8e2009-03-22 08:21:4186Move/rename a branch even if the new branch name already exists.
Junio C Hamanoe7935c42006-12-13 21:32:1787
Junio C Hamanoeb692952007-01-03 22:02:1288--color::
89Color branches to highlight current, local, and remote branches.
90
91--no-color::
92Turn off branch colors, even when the configuration file gives the
93default to color output.
94
Junio C Hamanoc8d88c22006-04-29 07:02:0195-r::
Junio C Hamano63ef0ac2006-12-22 07:28:1896List or delete (if used with -d) the remote-tracking branches.
Junio C Hamanofe9acab2006-11-24 12:10:5597
98-a::
99List both remote-tracking branches and local branches.
Junio C Hamano560a1f62006-01-30 04:19:57100
Junio C Hamanoeb415992008-06-08 22:49:47101-v::
102--verbose::
Junio C Hamano98e32c32009-04-13 02:39:53103Show sha1 and commit subject line for each head, along with
104relationship to upstream branch (if any). If given twice, print
105the name of the upstream branch, as well.
Junio C Hamano53edd072006-11-25 10:05:21106
107--abbrev=<length>::
Junio C Hamanofd83b8e2009-03-22 08:21:41108Alter the sha1's minimum display length in the output listing.
109The default value is 7.
Junio C Hamano53edd072006-11-25 10:05:21110
Junio C Hamanoa3fccdf2007-03-03 05:18:26111--no-abbrev::
Junio C Hamanofd83b8e2009-03-22 08:21:41112Display the full sha1s in the output listing rather than abbreviating them.
Junio C Hamanoa3fccdf2007-03-03 05:18:26113
Junio C Hamano89bdb3b2009-05-10 06:48:14114-t::
Junio C Hamano1b50ce92007-10-03 12:05:53115--track::
Junio C Hamano3bd66e92009-04-18 06:17:56116When creating a new branch, set up configuration to mark the
117start-point branch as "upstream" from the new branch. This
118configuration will tell git to show the relationship between the
119two branches in `git status` and `git branch -v`. Furthermore,
120it directs `git pull` without arguments to pull from the
121upstream when the new branch is checked out.
122+
123This behavior is the default when the start point is a remote branch.
124Set the branch.autosetupmerge configuration variable to `false` if you
125want `git checkout` and `git branch` to always behave as if '--no-track'
126were given. Set it to `always` if you want this behavior when the
127start-point is either a local or remote branch.
Junio C Hamano1b50ce92007-10-03 12:05:53128
129--no-track::
Junio C Hamano3bd66e92009-04-18 06:17:56130Do not set up "upstream" configuration, even if the
131branch.autosetupmerge configuration variable is true.
Junio C Hamano1b50ce92007-10-03 12:05:53132
Junio C Hamano47d68a52008-05-06 06:35:40133--contains <commit>::
134Only list branches which contain the specified commit.
135
136--merged::
137Only list branches which are fully contained by HEAD.
138
139--no-merged::
140Do not list branches which are fully contained by HEAD.
141
Junio C Hamano1a4e8412005-12-27 08:17:23142<branchname>::
143The name of the branch to create or delete.
Junio C Hamanob2f5edd2006-05-21 10:50:09144The new branch name must pass all checks defined by
Junio C Hamano35738e82008-01-07 07:55:46145linkgit:git-check-ref-format[1]. Some of these checks
Junio C Hamanob2f5edd2006-05-21 10:50:09146may restrict the characters allowed in a branch name.
Junio C Hamano1a4e8412005-12-27 08:17:23147
Junio C Hamano560a1f62006-01-30 04:19:57148<start-point>::
Junio C Hamanoc8d88c22006-04-29 07:02:01149The new branch will be created with a HEAD equal to this. It may
150be given as a branch name, a commit-id, or a tag. If this option
151is omitted, the current branch is assumed.
152
Junio C Hamanoe7935c42006-12-13 21:32:17153<oldbranch>::
154The name of an existing branch to rename.
155
156<newbranch>::
157The new name for an existing branch. The same restrictions as for
Junio C Hamanofd83b8e2009-03-22 08:21:41158<branchname> apply.
Junio C Hamano1a4e8412005-12-27 08:17:23159
160
161Examples
Junio C Hamanoc8d88c22006-04-29 07:02:01162--------
Junio C Hamano1a4e8412005-12-27 08:17:23163
Junio C Hamanofd83b8e2009-03-22 08:21:41164Start development from a known tag::
Junio C Hamano1a4e8412005-12-27 08:17:23165+
166------------
167$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
168$ cd my2.6
Junio C Hamanoc8d88c22006-04-29 07:02:01169$ git branch my2.6.14 v2.6.14 <1>
Junio C Hamano1a4e8412005-12-27 08:17:23170$ git checkout my2.6.14
Junio C Hamano1a4e8412005-12-27 08:17:23171------------
Junio C Hamanoc8d88c22006-04-29 07:02:01172+
173<1> This step and the next one could be combined into a single step with
174"checkout -b my2.6.14 v2.6.14".
Junio C Hamano1a4e8412005-12-27 08:17:23175
Junio C Hamanofd83b8e2009-03-22 08:21:41176Delete an unneeded branch::
Junio C Hamano1a4e8412005-12-27 08:17:23177+
178------------
179$ git clone git://git.kernel.org/.../git.git my.git
180$ cd my.git
Junio C Hamano18b6ff32007-07-17 10:40:26181$ git branch -d -r origin/todo origin/html origin/man <1>
182$ git branch -D test <2>
Junio C Hamanoc8d88c22006-04-29 07:02:01183------------
184+
Junio C Hamanofd83b8e2009-03-22 08:21:41185<1> Delete the remote-tracking branches "todo", "html" and "man". The next
186'fetch' or 'pull' will create them again unless you configure them not to.
187See linkgit:git-fetch[1].
188<2> Delete the "test" branch even if the "master" branch (or whichever branch
189is currently checked out) does not have all commits from the test branch.
Junio C Hamanoc8d88c22006-04-29 07:02:01190
191
192Notes
193-----
194
Junio C Hamanofd83b8e2009-03-22 08:21:41195If you are creating a branch that you want to checkout immediately, it is
Junio C Hamanoc8d88c22006-04-29 07:02:01196easier to use the git checkout command with its `-b` option to create
197a branch and check it out with a single command.
198
Junio C Hamanofd83b8e2009-03-22 08:21:41199The options `--contains`, `--merged` and `--no-merged` serve three related
Junio C Hamano47d68a52008-05-06 06:35:40200but different purposes:
201
202- `--contains <commit>` is used to find all branches which will need
203 special attention if <commit> were to be rebased or amended, since those
204 branches contain the specified <commit>.
205
206- `--merged` is used to find all branches which can be safely deleted,
207 since those branches are fully contained by HEAD.
208
209- `--no-merged` is used to find branches which are candidates for merging
210 into HEAD, since those branches are not fully contained by HEAD.
Junio C Hamano1a4e8412005-12-27 08:17:23211
212Author
213------
Junio C Hamano0868a302008-07-22 09:20:44214Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <gitster@pobox.com>
Junio C Hamano1a4e8412005-12-27 08:17:23215
216Documentation
217--------------
218Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
219
220GIT
221---
Junio C Hamanof7c042d2008-06-06 22:50:53222Part of the linkgit:git[1] suite