1git-branch(1) 2============= 3 4NAME 5---- 6git-branch - List, create, or delete branches 7 8SYNOPSIS 9-------- 10[verse] 11'git-branch' [--color | --no-color] [-r | -a] 12 [-v [--abbrev=<length> | --no-abbrev]] 13 [--contains <commit>] 14'git-branch' [--track | --no-track] [-l] [-f] <branchname> [<start-point>] 15'git-branch' (-m | -M) [<oldbranch>] <newbranch> 16'git-branch' (-d | -D) [-r] <branchname>... 17 18DESCRIPTION 19----------- 20With no arguments given a list of existing branches 21will be shown, the current branch will be highlighted with an asterisk. 22Option `-r` causes the remote-tracking branches to be listed, 23and option `-a` shows both. 24With `--contains <commit>`, shows only the branches that 25contains the named commit (in other words, the branches whose 26tip commits are descendant of the named commit). 27 28In its second form, a new branch named <branchname> will be created. 29It will start out with a head equal to the one given as <start-point>. 30If no <start-point> is given, the branch will be created with a head 31equal to that of the currently checked out branch. 32 33Note that this will create the new branch, but it will not switch the 34working tree to it; use "git checkout <newbranch>" to switch to the 35new branch. 36 37When a local branch is started off a remote branch, git sets up the 38branch so that linkgit:git-pull[1] will appropriately merge from 39the remote branch. This behavior may be changed via the global 40`branch.autosetupmerge` configuration flag. That setting can be 41overridden by using the `--track` and `--no-track` options. 42 43With a '-m' or '-M' option, <oldbranch> will be renamed to <newbranch>. 44If <oldbranch> had a corresponding reflog, it is renamed to match 45<newbranch>, and a reflog entry is created to remember the branch 46renaming. If <newbranch> exists, -M must be used to force the rename 47to happen. 48 49With a `-d` or `-D` option, `<branchname>` will be deleted. You may 50specify more than one branch for deletion. If the branch currently 51has a reflog then the reflog will also be deleted. 52 53Use -r together with -d to delete remote-tracking branches. Note, that it 54only makes sense to delete remote-tracking branches if they no longer exist 55in remote repository or if linkgit:git-fetch[1] was configured not to fetch 56them again. See also 'prune' subcommand of linkgit:git-remote[1] for way to 57clean up all obsolete remote-tracking branches. 58 59 60OPTIONS 61------- 62-d:: 63 Delete a branch. The branch must be fully merged in HEAD. 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 70 all changes made to the branch ref, enabling use of date 71 based sha1 expressions such as "<branchname>@\{yesterday}". 72 73-f:: 74 Force the creation of a new branch even if it means deleting 75 a branch that already exists with the same name. 76 77-m:: 78 Move/rename a branch and the corresponding reflog. 79 80-M:: 81 Move/rename a branch even if the new branchname already exists. 82 83--color:: 84 Color branches to highlight current, local, and remote branches. 85 86--no-color:: 87 Turn off branch colors, even when the configuration file gives the 88 default to color output. 89 90-r:: 91 List or delete (if used with -d) the remote-tracking branches. 92 93-a:: 94 List both remote-tracking branches and local branches. 95 96-v, --verbose:: 97 Show sha1 and commit subject line for each head. 98 99--abbrev=<length>:: 100 Alter minimum display length for sha1 in output listing, 101 default value is 7. 102 103--no-abbrev:: 104 Display the full sha1s in output listing rather than abbreviating them. 105 106--track:: 107 When creating a new branch, set up configuration so that git-pull 108 will automatically retrieve data from the start point, which must be 109 a branch. Use this if you always pull from the same upstream branch 110 into the new branch, and if you don't want to use "git pull 111 <repository> <refspec>" explicitly. This behavior is the default 112 when the start point is a remote branch. Set the 113 branch.autosetupmerge configuration variable to `false` if you want 114 git-checkout and git-branch to always behave as if '--no-track' were 115 given. Set it to `always` if you want this behavior when the 116 start-point is either a local or remote branch. 117 118--no-track:: 119 Ignore the branch.autosetupmerge configuration variable. 120 121<branchname>:: 122 The name of the branch to create or delete. 123 The new branch name must pass all checks defined by 124 linkgit:git-check-ref-format[1]. Some of these checks 125 may restrict the characters allowed in a branch name. 126 127<start-point>:: 128 The new branch will be created with a HEAD equal to this. It may 129 be given as a branch name, a commit-id, or a tag. If this option 130 is omitted, the current branch is assumed. 131 132<oldbranch>:: 133 The name of an existing branch to rename. 134 135<newbranch>:: 136 The new name for an existing branch. The same restrictions as for 137 <branchname> applies. 138 139 140Examples 141-------- 142 143Start development off of a known tag:: 144+ 145------------ 146$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6 147$ cd my2.6 148$ git branch my2.6.14 v2.6.14 <1> 149$ git checkout my2.6.14 150------------ 151+ 152<1> This step and the next one could be combined into a single step with 153"checkout -b my2.6.14 v2.6.14". 154 155Delete unneeded branch:: 156+ 157------------ 158$ git clone git://git.kernel.org/.../git.git my.git 159$ cd my.git 160$ git branch -d -r origin/todo origin/html origin/man <1> 161$ git branch -D test <2> 162------------ 163+ 164<1> Delete remote-tracking branches "todo", "html", "man". Next 'fetch' or 165'pull' will create them again unless you configure them not to. See 166linkgit:git-fetch[1]. 167<2> Delete "test" branch even if the "master" branch (or whichever branch is 168currently checked out) does not have all commits from test branch. 169 170 171Notes 172----- 173 174If you are creating a branch that you want to immediately checkout, it's 175easier to use the git checkout command with its `-b` option to create 176a branch and check it out with a single command. 177 178 179Author 180------ 181Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <junkio@cox.net> 182 183Documentation 184-------------- 185Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>. 186 187GIT 188--- 189Part of the linkgit:git[7] suite