1GIT-BRANCH(1) Git Manual GIT-BRANCH(1)
2
3
4
6 git-branch - List, create, or delete branches
7
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
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
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
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 [1m(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 [1m(1)
180 $ git branch -D test [1m(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
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
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
213 Written by Linus Torvalds <torvalds@osdl.org[2]> and Junio C Hamano
214 <gitster@pobox.com[3]>
215
217 Documentation by Junio C Hamano and the git-list
218 <git@vger.kernel.org[4]>.
219
221 Part of the git(1) suite
222
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)