1GIT-BRANCH(1)                     Git Manual                     GIT-BRANCH(1)
2
3
4

NAME

6       git-branch - List, create, or delete branches
7

SYNOPSIS

9       git branch [--color[=<when>] | --no-color] [-r | -a]
10               [-v [--abbrev=<length> | --no-abbrev]]
11               [(--merged | --no-merged | --contains) [<commit>]]
12       git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
13       git branch (-m | -M) [<oldbranch>] <newbranch>
14       git branch (-d | -D) [-r] <branchname>...
15
16

DESCRIPTION

18       With no arguments, existing branches are listed and the current branch
19       will be highlighted with an asterisk. Option -r causes the
20       remote-tracking branches to be listed, and option -a shows both.
21
22       With --contains, shows only the branches that contain the named commit
23       (in other words, the branches whose tip commits are descendants of the
24       named commit). With --merged, only branches merged into the named
25       commit (i.e. the branches whose tip commits are reachable from the
26       named commit) will be listed. With --no-merged only branches not merged
27       into the named commit will be listed. If the <commit> argument is
28       missing it defaults to HEAD (i.e. the tip of the current branch).
29
30       The command’s second form creates a new branch head named <branchname>
31       which points to the current HEAD, or <start-point> if given.
32
33       Note that this will create the new branch, but it will not switch the
34       working tree to it; use "git checkout <newbranch>" to switch to the new
35       branch.
36
37       When a local branch is started off a remote branch, git sets up the
38       branch so that git pull will appropriately merge from the remote
39       branch. This behavior may be changed via the global
40       branch.autosetupmerge configuration flag. That setting can be
41       overridden by using the --track and --no-track options.
42
43       With a -m or -M option, <oldbranch> will be renamed to <newbranch>. If
44       <oldbranch> had a corresponding reflog, it is renamed to match
45       <newbranch>, and a reflog entry is created to remember the branch
46       renaming. If <newbranch> exists, -M must be used to force the rename to
47       happen.
48
49       With a -d or -D option, <branchname> will be deleted. You may specify
50       more than one branch for deletion. If the branch currently has a reflog
51       then the reflog will also be deleted.
52
53       Use -r together with -d to delete remote-tracking branches. Note, that
54       it only makes sense to delete remote-tracking branches if they no
55       longer exist in the remote repository or if git fetch was configured
56       not to fetch them again. See also the prune subcommand of git-remote(1)
57       for a way to clean up all obsolete remote-tracking branches.
58

OPTIONS

60       -d
61           Delete a branch. The branch must be fully merged in its upstream
62           branch, or in HEAD if no upstream was set with --track or
63           --set-upstream.
64
65       -D
66           Delete a branch irrespective of its merged status.
67
68       -l
69           Create the branch’s reflog. This activates recording of all changes
70           made to the branch ref, enabling use of date based sha1 expressions
71           such as "<branchname>@{yesterday}". Note that in non-bare
72           repositories, reflogs are usually enabled by default by the
73           core.logallrefupdates config option.
74
75       -f, --force
76           Reset <branchname> to <startpoint> if <branchname> exists already.
77           Without -f git branch refuses to change an existing branch.
78
79       -m
80           Move/rename a branch and the corresponding reflog.
81
82       -M
83           Move/rename a branch even if the new branch name already exists.
84
85       --color[=<when>]
86           Color branches to highlight current, local, and remote branches.
87           The value must be always (the default), never, or auto.
88
89       --no-color
90           Turn off branch colors, even when the configuration file gives the
91           default to color output. Same as --color=never.
92
93       -r
94           List or delete (if used with -d) the remote-tracking branches.
95
96       -a
97           List both remote-tracking branches and local branches.
98
99       -v, --verbose
100           Show sha1 and commit subject line for each head, along with
101           relationship to upstream branch (if any). If given twice, print the
102           name of the upstream branch, as well.
103
104       --abbrev=<length>
105           Alter the sha1’s minimum display length in the output listing. The
106           default value is 7.
107
108       --no-abbrev
109           Display the full sha1s in the output listing rather than
110           abbreviating them.
111
112       -t, --track
113           When creating a new branch, set up configuration to mark the
114           start-point branch as "upstream" from the new branch. This
115           configuration will tell git to show the relationship between the
116           two branches in git status and git branch -v. Furthermore, it
117           directs git pull without arguments to pull from the upstream when
118           the new branch is checked out.
119
120           This behavior is the default when the start point is a remote
121           branch. Set the branch.autosetupmerge configuration variable to
122           false if you want git checkout and git branch to always behave as
123           if --no-track were given. Set it to always if you want this
124           behavior when the start-point is either a local or remote branch.
125
126       --no-track
127           Do not set up "upstream" configuration, even if the
128           branch.autosetupmerge configuration variable is true.
129
130       --set-upstream
131           If specified branch does not exist yet or if --force has been
132           given, acts exactly like --track. Otherwise sets up configuration
133           like --track would when creating the branch, except that where
134           branch points to is not changed.
135
136       --contains <commit>
137           Only list branches which contain the specified commit.
138
139       --merged [<commit>]
140           Only list branches whose tips are reachable from the specified
141           commit (HEAD if not specified).
142
143       --no-merged [<commit>]
144           Only list branches whose tips are not reachable from the specified
145           commit (HEAD if not specified).
146
147       <branchname>
148           The name of the branch to create or delete. The new branch name
149           must pass all checks defined by git-check-ref-format(1). Some of
150           these checks may restrict the characters allowed in a branch name.
151
152       <start-point>
153           The new branch head will point to this commit. It may be given as a
154           branch name, a commit-id, or a tag. If this option is omitted, the
155           current HEAD will be used instead.
156
157       <oldbranch>
158           The name of an existing branch to rename.
159
160       <newbranch>
161           The new name for an existing branch. The same restrictions as for
162           <branchname> apply.
163

EXAMPLES

165       Start development from a known tag
166
167               $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
168               $ cd my2.6
169               $ git branch my2.6.14 v2.6.14   (1)
170               $ git checkout my2.6.14
171
172           1. This step and the next one could be combined into a single step
173           with "checkout -b my2.6.14 v2.6.14".
174
175       Delete an unneeded branch
176
177               $ git clone git://git.kernel.org/.../git.git my.git
178               $ cd my.git
179               $ git branch -d -r origin/todo origin/html origin/man   (1)
180               $ git branch -D test                                    (2)
181
182           1. Delete the remote-tracking branches "todo", "html" and "man".
183           The next fetch or pull will create them again unless you configure
184           them not to. See git-fetch(1).
185           2. Delete the "test" branch even if the "master" branch (or
186           whichever branch is currently checked out) does not have all
187           commits from the test branch.
188

NOTES

190       If you are creating a branch that you want to checkout immediately, it
191       is easier to use the git checkout command with its -b option to create
192       a branch and check it out with a single command.
193
194       The options --contains, --merged and --no-merged serve three related
195       but different purposes:
196
197       ·    --contains <commit> is used to find all branches which will need
198           special attention if <commit> were to be rebased or amended, since
199           those branches contain the specified <commit>.
200
201       ·    --merged is used to find all branches which can be safely deleted,
202           since those branches are fully contained by HEAD.
203
204       ·    --no-merged is used to find branches which are candidates for
205           merging into HEAD, since those branches are not fully contained by
206           HEAD.
207

SEE ALSO

209       git-check-ref-format(1), git-fetch(1), git-remote(1), “Understanding
210       history: What is a branch?”[1] in the Git User’s Manual.
211

AUTHOR

213       Written by Linus Torvalds <torvalds@osdl.org[2]> and Junio C Hamano
214       <gitster@pobox.com[3]>
215

DOCUMENTATION

217       Documentation by Junio C Hamano and the git-list
218       <git@vger.kernel.org[4]>.
219

GIT

221       Part of the git(1) suite
222

NOTES

224        1. “Understanding history: What is a branch?”
225           file:///usr/share/doc/git-1.7.1/user-manual.html#what-is-a-branch
226
227        2. torvalds@osdl.org
228           mailto:torvalds@osdl.org
229
230        3. gitster@pobox.com
231           mailto:gitster@pobox.com
232
233        4. git@vger.kernel.org
234           mailto:git@vger.kernel.org
235
236
237
238Git 1.7.1                         08/16/2017                     GIT-BRANCH(1)
Impressum