blob: 47235bea0403bf25fa73529a37a7c5f87d0d7eb9 [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 Hamano4aa0bcc2010-03-03 05:13:1211'git branch' [--color[=<when>] | --no-color] [-r | -a]
Junio C Hamano8fb66e52011-10-05 20:59:5112[--list] [-v [--abbrev=<length> | --no-abbrev]]
Junio C Hamano22700fb2012-05-03 23:07:2513[--column[=<options>] | --no-column]
Junio C Hamano8fb66e52011-10-05 20:59:5114[(--merged | --no-merged | --contains) [<commit>]] [<pattern>...]
Junio C Hamano57827fb2010-01-23 03:02:5015'git branch' [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
Junio C Hamanofce7c7e2008-07-02 03:06:3816'git branch' (-m | -M) [<oldbranch>] <newbranch>
17'git branch' (-d | -D) [-r] <branchname>...
Junio C Hamano515ab1d2011-12-09 23:41:2018'git branch' --edit-description [<branchname>]
Junio C Hamano1a4e8412005-12-27 08:17:2319
20DESCRIPTION
21-----------
Junio C Hamano38ddcce2008-07-15 15:49:0322
Junio C Hamanofd83b8e2009-03-22 08:21:4123With no arguments, existing branches are listed and the current branch will
Junio C Hamano38ddcce2008-07-15 15:49:0324be highlighted with an asterisk. Option `-r` causes the remote-tracking
Junio C Hamano8fb66e52011-10-05 20:59:5125branches to be listed, and option `-a` shows both. This list mode is also
26activated by the `--list` option (see below).
27<pattern> restricts the output to matching branches, the pattern is a shell
Junio C Hamanocae88e22012-03-09 00:13:2028wildcard (i.e., matched using fnmatch(3)).
29Multiple patterns may be given; if any of them matches, the branch is shown.
Junio C Hamano38ddcce2008-07-15 15:49:0330
Junio C Hamanofd83b8e2009-03-22 08:21:4131With `--contains`, shows only the branches that contain the named commit
32(in other words, the branches whose tip commits are descendants of the
Junio C Hamano38ddcce2008-07-15 15:49:0333named commit). With `--merged`, only branches merged into the named
34commit (i.e. the branches whose tip commits are reachable from the named
35commit) will be listed. With `--no-merged` only branches not merged into
Junio C Hamanofd83b8e2009-03-22 08:21:4136the named commit will be listed. If the <commit> argument is missing it
37defaults to 'HEAD' (i.e. the tip of the current branch).
Junio C Hamano1a4e8412005-12-27 08:17:2338
Junio C Hamanoc0e55e72009-10-10 00:56:2939The command's second form creates a new branch head named <branchname>
40which points to the current 'HEAD', or <start-point> if given.
Junio C Hamanoc8d88c22006-04-29 07:02:0141
Junio C Hamano1b50ce92007-10-03 12:05:5342Note that this will create the new branch, but it will not switch the
43working tree to it; use "git checkout <newbranch>" to switch to the
44new branch.
45
Junio C Hamano97bcb482010-11-25 03:16:0746When a local branch is started off a remote-tracking branch, git sets up the
Junio C Hamano1aa40d22010-01-21 17:46:4347branch so that 'git pull' will appropriately merge from
Junio C Hamano97bcb482010-11-25 03:16:0748the remote-tracking branch. This behavior may be changed via the global
Junio C Hamano24bc09a2008-02-28 00:27:4449`branch.autosetupmerge` configuration flag. That setting can be
Junio C Hamano97bcb482010-11-25 03:16:0750overridden by using the `--track` and `--no-track` options, and
51changed later using `git branch --set-upstream`.
Junio C Hamano103ad7f2007-03-14 11:19:2652
Junio C Hamanocae88e22012-03-09 00:13:2053With a `-m` or `-M` option, <oldbranch> will be renamed to <newbranch>.
Junio C Hamanoe7935c42006-12-13 21:32:1754If <oldbranch> had a corresponding reflog, it is renamed to match
55<newbranch>, and a reflog entry is created to remember the branch
56renaming. If <newbranch> exists, -M must be used to force the rename
57to happen.
58
Junio C Hamanoc8d88c22006-04-29 07:02:0159With a `-d` or `-D` option, `<branchname>` will be deleted. You may
Junio C Hamano341071d2006-06-04 07:24:4860specify more than one branch for deletion. If the branch currently
Junio C Hamano258e4412007-11-29 02:28:3261has a reflog then the reflog will also be deleted.
62
Junio C Hamanocae88e22012-03-09 00:13:2063Use `-r` together with `-d` to delete remote-tracking branches. Note, that it
Junio C Hamano258e4412007-11-29 02:28:3264only makes sense to delete remote-tracking branches if they no longer exist
Junio C Hamano1aa40d22010-01-21 17:46:4365in the remote repository or if 'git fetch' was configured not to fetch
Junio C Hamanofd83b8e2009-03-22 08:21:4166them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a
67way to clean up all obsolete remote-tracking branches.
Junio C Hamano2b135272006-03-18 07:45:4268
69
Junio C Hamano1a4e8412005-12-27 08:17:2370OPTIONS
71-------
72-d::
Junio C Hamano8fb66e52011-10-05 20:59:5173--delete::
Junio C Hamanod9657062010-04-18 00:01:0374Delete a branch. The branch must be fully merged in its
75upstream branch, or in `HEAD` if no upstream was set with
76`--track` or `--set-upstream`.
Junio C Hamano1a4e8412005-12-27 08:17:2377
78-D::
Junio C Hamano258e4412007-11-29 02:28:3279Delete a branch irrespective of its merged status.
Junio C Hamano1a4e8412005-12-27 08:17:2380
Junio C Hamano341071d2006-06-04 07:24:4881-l::
Junio C Hamano8fb66e52011-10-05 20:59:5182--create-reflog::
Junio C Hamano1d90cb02007-07-03 07:05:3183Create the branch's reflog. This activates recording of
84all changes made to the branch ref, enabling use of date
85based sha1 expressions such as "<branchname>@\{yesterday}".
Junio C Hamanoe7495622010-04-09 07:18:3586Note that in non-bare repositories, reflogs are usually
87enabled by default by the `core.logallrefupdates` config option.
Junio C Hamano341071d2006-06-04 07:24:4888
Junio C Hamano560a1f62006-01-30 04:19:5789-f::
Junio C Hamano68cfa3a2009-08-30 00:22:5590--force::
Junio C Hamanoea82cff2009-03-18 01:54:4891Reset <branchname> to <startpoint> if <branchname> exists
Junio C Hamano1aa40d22010-01-21 17:46:4392already. Without `-f` 'git branch' refuses to change an existing branch.
Junio C Hamanoc8d88c22006-04-29 07:02:0193
Junio C Hamanoe7935c42006-12-13 21:32:1794-m::
Junio C Hamano8fb66e52011-10-05 20:59:5195--move::
Junio C Hamanoe7935c42006-12-13 21:32:1796Move/rename a branch and the corresponding reflog.
97
98-M::
Junio C Hamanofd83b8e2009-03-22 08:21:4199Move/rename a branch even if the new branch name already exists.
Junio C Hamanoe7935c42006-12-13 21:32:17100
Junio C Hamano4aa0bcc2010-03-03 05:13:12101--color[=<when>]::
Junio C Hamano97bcb482010-11-25 03:16:07102Color branches to highlight current, local, and
103remote-tracking branches.
Junio C Hamano4aa0bcc2010-03-03 05:13:12104The value must be always (the default), never, or auto.
Junio C Hamanoeb692952007-01-03 22:02:12105
106--no-color::
107Turn off branch colors, even when the configuration file gives the
108default to color output.
Junio C Hamano4aa0bcc2010-03-03 05:13:12109Same as `--color=never`.
Junio C Hamanoeb692952007-01-03 22:02:12110
Junio C Hamano22700fb2012-05-03 23:07:25111--column[=<options>]::
112--no-column::
113Display branch listing in columns. See configuration variable
114column.branch for option syntax.`--column` and `--no-column`
115without options are equivalent to 'always' and 'never' respectively.
116+
117This option is only applicable in non-verbose mode.
118
Junio C Hamanoc8d88c22006-04-29 07:02:01119-r::
Junio C Hamano8fb66e52011-10-05 20:59:51120--remotes::
Junio C Hamano63ef0ac2006-12-22 07:28:18121List or delete (if used with -d) the remote-tracking branches.
Junio C Hamanofe9acab2006-11-24 12:10:55122
123-a::
Junio C Hamano8fb66e52011-10-05 20:59:51124--all::
Junio C Hamanofe9acab2006-11-24 12:10:55125List both remote-tracking branches and local branches.
Junio C Hamano560a1f62006-01-30 04:19:57126
Junio C Hamano8fb66e52011-10-05 20:59:51127--list::
128Activate the list mode. `git branch <pattern>` would try to create a branch,
129use `git branch --list <pattern>` to list matching branches.
130
Junio C Hamanoeb415992008-06-08 22:49:47131-v::
132--verbose::
Junio C Hamano8fb66e52011-10-05 20:59:51133When in list mode,
134show sha1 and commit subject line for each head, along with
Junio C Hamano98e32c32009-04-13 02:39:53135relationship to upstream branch (if any). If given twice, print
136the name of the upstream branch, as well.
Junio C Hamano53edd072006-11-25 10:05:21137
Junio C Hamano51f87de2012-04-16 21:18:54138-q::
139--quiet::
140Be more quiet when creating or deleting a branch, suppressing
141non-error messages.
142
Junio C Hamano53edd072006-11-25 10:05:21143--abbrev=<length>::
Junio C Hamanofd83b8e2009-03-22 08:21:41144Alter the sha1's minimum display length in the output listing.
Junio C Hamano6e41cb32011-08-29 07:12:49145The default value is 7 and can be overridden by the `core.abbrev`
146config option.
Junio C Hamano53edd072006-11-25 10:05:21147
Junio C Hamanoa3fccdf2007-03-03 05:18:26148--no-abbrev::
Junio C Hamanofd83b8e2009-03-22 08:21:41149Display the full sha1s in the output listing rather than abbreviating them.
Junio C Hamanoa3fccdf2007-03-03 05:18:26150
Junio C Hamano89bdb3b2009-05-10 06:48:14151-t::
Junio C Hamano1b50ce92007-10-03 12:05:53152--track::
Junio C Hamano3bd66e92009-04-18 06:17:56153When creating a new branch, set up configuration to mark the
154start-point branch as "upstream" from the new branch. This
155configuration will tell git to show the relationship between the
156two branches in `git status` and `git branch -v`. Furthermore,
157it directs `git pull` without arguments to pull from the
158upstream when the new branch is checked out.
159+
Junio C Hamano97bcb482010-11-25 03:16:07160This behavior is the default when the start point is a remote-tracking branch.
Junio C Hamano3bd66e92009-04-18 06:17:56161Set the branch.autosetupmerge configuration variable to `false` if you
162want `git checkout` and `git branch` to always behave as if '--no-track'
163were given. Set it to `always` if you want this behavior when the
Junio C Hamano97bcb482010-11-25 03:16:07164start-point is either a local or remote-tracking branch.
Junio C Hamano1b50ce92007-10-03 12:05:53165
166--no-track::
Junio C Hamano3bd66e92009-04-18 06:17:56167Do not set up "upstream" configuration, even if the
168branch.autosetupmerge configuration variable is true.
Junio C Hamano1b50ce92007-10-03 12:05:53169
Junio C Hamano57827fb2010-01-23 03:02:50170--set-upstream::
Junio C Hamanocae88e22012-03-09 00:13:20171If specified branch does not exist yet or if `--force` has been
172given, acts exactly like `--track`. Otherwise sets up configuration
173like `--track` would when creating the branch, except that where
Junio C Hamano57827fb2010-01-23 03:02:50174branch points to is not changed.
175
Junio C Hamano515ab1d2011-12-09 23:41:20176--edit-description::
177Open an editor and edit the text to explain what the branch is
178for, to be used by various other commands (e.g. `request-pull`).
179
Junio C Hamanocae88e22012-03-09 00:13:20180--contains [<commit>]::
181Only list branches which contain the specified commit (HEAD
182if not specified).
Junio C Hamano47d68a52008-05-06 06:35:40183
Junio C Hamanoc0e55e72009-10-10 00:56:29184--merged [<commit>]::
185Only list branches whose tips are reachable from the
186specified commit (HEAD if not specified).
Junio C Hamano47d68a52008-05-06 06:35:40187
Junio C Hamanoc0e55e72009-10-10 00:56:29188--no-merged [<commit>]::
189Only list branches whose tips are not reachable from the
190specified commit (HEAD if not specified).
Junio C Hamano47d68a52008-05-06 06:35:40191
Junio C Hamano1a4e8412005-12-27 08:17:23192<branchname>::
193The name of the branch to create or delete.
Junio C Hamanob2f5edd2006-05-21 10:50:09194The new branch name must pass all checks defined by
Junio C Hamano35738e82008-01-07 07:55:46195linkgit:git-check-ref-format[1]. Some of these checks
Junio C Hamanob2f5edd2006-05-21 10:50:09196may restrict the characters allowed in a branch name.
Junio C Hamano1a4e8412005-12-27 08:17:23197
Junio C Hamano560a1f62006-01-30 04:19:57198<start-point>::
Junio C Hamanoc0e55e72009-10-10 00:56:29199The new branch head will point to this commit. It may be
200given as a branch name, a commit-id, or a tag. If this
201option is omitted, the current HEAD will be used instead.
Junio C Hamanoc8d88c22006-04-29 07:02:01202
Junio C Hamanoe7935c42006-12-13 21:32:17203<oldbranch>::
204The name of an existing branch to rename.
205
206<newbranch>::
207The new name for an existing branch. The same restrictions as for
Junio C Hamanofd83b8e2009-03-22 08:21:41208<branchname> apply.
Junio C Hamano1a4e8412005-12-27 08:17:23209
210
211Examples
Junio C Hamanoc8d88c22006-04-29 07:02:01212--------
Junio C Hamano1a4e8412005-12-27 08:17:23213
Junio C Hamanofd83b8e2009-03-22 08:21:41214Start development from a known tag::
Junio C Hamano1a4e8412005-12-27 08:17:23215+
216------------
217$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
218$ cd my2.6
Junio C Hamanoc8d88c22006-04-29 07:02:01219$ git branch my2.6.14 v2.6.14 <1>
Junio C Hamano1a4e8412005-12-27 08:17:23220$ git checkout my2.6.14
Junio C Hamano1a4e8412005-12-27 08:17:23221------------
Junio C Hamanoc8d88c22006-04-29 07:02:01222+
223<1> This step and the next one could be combined into a single step with
224"checkout -b my2.6.14 v2.6.14".
Junio C Hamano1a4e8412005-12-27 08:17:23225
Junio C Hamanofd83b8e2009-03-22 08:21:41226Delete an unneeded branch::
Junio C Hamano1a4e8412005-12-27 08:17:23227+
228------------
229$ git clone git://git.kernel.org/.../git.git my.git
230$ cd my.git
Junio C Hamano18b6ff32007-07-17 10:40:26231$ git branch -d -r origin/todo origin/html origin/man <1>
232$ git branch -D test <2>
Junio C Hamanoc8d88c22006-04-29 07:02:01233------------
234+
Junio C Hamanofd83b8e2009-03-22 08:21:41235<1> Delete the remote-tracking branches "todo", "html" and "man". The next
236'fetch' or 'pull' will create them again unless you configure them not to.
237See linkgit:git-fetch[1].
238<2> Delete the "test" branch even if the "master" branch (or whichever branch
239is currently checked out) does not have all commits from the test branch.
Junio C Hamanoc8d88c22006-04-29 07:02:01240
241
242Notes
243-----
244
Junio C Hamanofd83b8e2009-03-22 08:21:41245If you are creating a branch that you want to checkout immediately, it is
Junio C Hamanoc8d88c22006-04-29 07:02:01246easier to use the git checkout command with its `-b` option to create
247a branch and check it out with a single command.
248
Junio C Hamanofd83b8e2009-03-22 08:21:41249The options `--contains`, `--merged` and `--no-merged` serve three related
Junio C Hamano47d68a52008-05-06 06:35:40250but different purposes:
251
252- `--contains <commit>` is used to find all branches which will need
253 special attention if <commit> were to be rebased or amended, since those
254 branches contain the specified <commit>.
255
256- `--merged` is used to find all branches which can be safely deleted,
257 since those branches are fully contained by HEAD.
258
259- `--no-merged` is used to find branches which are candidates for merging
260 into HEAD, since those branches are not fully contained by HEAD.
Junio C Hamano1a4e8412005-12-27 08:17:23261
Junio C Hamanoc276ec72009-08-26 01:35:22262SEE ALSO
263--------
264linkgit:git-check-ref-format[1],
265linkgit:git-fetch[1],
Junio C Hamanoc0e55e72009-10-10 00:56:29266linkgit:git-remote[1],
267link:user-manual.html#what-is-a-branch[``Understanding history: What is
268a branch?''] in the Git User's Manual.
Junio C Hamanoc276ec72009-08-26 01:35:22269
Junio C Hamano1a4e8412005-12-27 08:17:23270GIT
271---
Junio C Hamanof7c042d2008-06-06 22:50:53272Part of the linkgit:git[1] suite