| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-branch(1) |
| 2 | ============= |
| 3 | |
| 4 | NAME |
| 5 | ---- |
| Junio C Hamano | 7c73c66 | 2007-01-19 00:37:50 | [diff] [blame] | 6 | git-branch - List, create, or delete branches |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 7 | |
| 8 | SYNOPSIS |
| 9 | -------- |
| Junio C Hamano | 2b13527 | 2006-03-18 07:45:42 | [diff] [blame] | 10 | [verse] |
| Junio C Hamano | 4aa0bcc | 2010-03-03 05:13:12 | [diff] [blame] | 11 | 'git branch' [--color[=<when>] | --no-color] [-r | -a] |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 12 | [--list] [-v [--abbrev=<length> | --no-abbrev]] |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 13 | [--column[=<options>] | --no-column] [--sort=<key>] |
| 14 | [(--merged | --no-merged) [<commit>]] |
| 15 | [--contains [<commit]] [--no-contains [<commit>]] |
| Junio C Hamano | cbe0eb2 | 2017-02-27 23:37:49 | [diff] [blame] | 16 | [--points-at <object>] [--format=<format>] [<pattern>...] |
| Junio C Hamano | 980e61e | 2018-09-17 22:45:52 | [diff] [blame] | 17 | 'git branch' [--track | --no-track] [-f] <branchname> [<start-point>] |
| Junio C Hamano | eccdd4a | 2012-09-10 23:28:17 | [diff] [blame] | 18 | 'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>] |
| 19 | 'git branch' --unset-upstream [<branchname>] |
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 20 | 'git branch' (-m | -M) [<oldbranch>] <newbranch> |
| Junio C Hamano | 139b7d1 | 2017-10-03 07:10:59 | [diff] [blame] | 21 | 'git branch' (-c | -C) [<oldbranch>] <newbranch> |
| Junio C Hamano | fce7c7e | 2008-07-02 03:06:38 | [diff] [blame] | 22 | 'git branch' (-d | -D) [-r] <branchname>... |
| Junio C Hamano | 515ab1d | 2011-12-09 23:41:20 | [diff] [blame] | 23 | 'git branch' --edit-description [<branchname>] |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 24 | |
| 25 | DESCRIPTION |
| 26 | ----------- |
| Junio C Hamano | 38ddcce | 2008-07-15 15:49:03 | [diff] [blame] | 27 | |
| Junio C Hamano | b5e079f | 2013-02-08 00:02:52 | [diff] [blame] | 28 | If `--list` is given, or if there are no non-option arguments, existing |
| 29 | branches are listed; the current branch will be highlighted with an |
| 30 | asterisk. Option `-r` causes the remote-tracking branches to be listed, |
| 31 | and option `-a` shows both local and remote branches. If a `<pattern>` |
| 32 | is given, it is used as a shell wildcard to restrict the output to |
| 33 | matching branches. If multiple patterns are given, a branch is shown if |
| 34 | it matches any of the patterns. Note that when providing a |
| 35 | `<pattern>`, you must use `--list`; otherwise the command is interpreted |
| 36 | as branch creation. |
| Junio C Hamano | 38ddcce | 2008-07-15 15:49:03 | [diff] [blame] | 37 | |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 38 | With `--contains`, shows only the branches that contain the named commit |
| 39 | (in other words, the branches whose tip commits are descendants of the |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 40 | named commit), `--no-contains` inverts it. With `--merged`, only branches |
| 41 | merged into the named commit (i.e. the branches whose tip commits are |
| 42 | reachable from the named commit) will be listed. With `--no-merged` only |
| 43 | branches not merged into the named commit will be listed. If the <commit> |
| 44 | argument is missing it defaults to `HEAD` (i.e. the tip of the current |
| 45 | branch). |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 46 | |
| Junio C Hamano | c0e55e7 | 2009-10-10 00:56:29 | [diff] [blame] | 47 | The command's second form creates a new branch head named <branchname> |
| Junio C Hamano | 92d8037 | 2016-07-13 22:00:05 | [diff] [blame] | 48 | which points to the current `HEAD`, or <start-point> if given. |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 49 | |
| Junio C Hamano | 1b50ce9 | 2007-10-03 12:05:53 | [diff] [blame] | 50 | Note that this will create the new branch, but it will not switch the |
| 51 | working tree to it; use "git checkout <newbranch>" to switch to the |
| 52 | new branch. |
| 53 | |
| Junio C Hamano | 076ffcc | 2013-02-06 05:13:21 | [diff] [blame] | 54 | When a local branch is started off a remote-tracking branch, Git sets up the |
| Junio C Hamano | 79f4c7c | 2013-09-20 21:03:37 | [diff] [blame] | 55 | branch (specifically the `branch.<name>.remote` and `branch.<name>.merge` |
| 56 | configuration entries) so that 'git pull' will appropriately merge from |
| Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 57 | the remote-tracking branch. This behavior may be changed via the global |
| Junio C Hamano | 322c624 | 2015-03-23 21:32:46 | [diff] [blame] | 58 | `branch.autoSetupMerge` configuration flag. That setting can be |
| Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 59 | overridden by using the `--track` and `--no-track` options, and |
| Junio C Hamano | eccdd4a | 2012-09-10 23:28:17 | [diff] [blame] | 60 | changed later using `git branch --set-upstream-to`. |
| Junio C Hamano | 103ad7f | 2007-03-14 11:19:26 | [diff] [blame] | 61 | |
| Junio C Hamano | cae88e2 | 2012-03-09 00:13:20 | [diff] [blame] | 62 | With a `-m` or `-M` option, <oldbranch> will be renamed to <newbranch>. |
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 63 | If <oldbranch> had a corresponding reflog, it is renamed to match |
| 64 | <newbranch>, and a reflog entry is created to remember the branch |
| 65 | renaming. If <newbranch> exists, -M must be used to force the rename |
| 66 | to happen. |
| 67 | |
| Junio C Hamano | 139b7d1 | 2017-10-03 07:10:59 | [diff] [blame] | 68 | The `-c` and `-C` options have the exact same semantics as `-m` and |
| 69 | `-M`, except instead of the branch being renamed it along with its |
| 70 | config and reflog will be copied to a new name. |
| 71 | |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 72 | With a `-d` or `-D` option, `<branchname>` will be deleted. You may |
| Junio C Hamano | 341071d | 2006-06-04 07:24:48 | [diff] [blame] | 73 | specify more than one branch for deletion. If the branch currently |
| Junio C Hamano | 258e441 | 2007-11-29 02:28:32 | [diff] [blame] | 74 | has a reflog then the reflog will also be deleted. |
| 75 | |
| Junio C Hamano | cae88e2 | 2012-03-09 00:13:20 | [diff] [blame] | 76 | Use `-r` together with `-d` to delete remote-tracking branches. Note, that it |
| Junio C Hamano | 258e441 | 2007-11-29 02:28:32 | [diff] [blame] | 77 | only makes sense to delete remote-tracking branches if they no longer exist |
| Junio C Hamano | 1aa40d2 | 2010-01-21 17:46:43 | [diff] [blame] | 78 | in the remote repository or if 'git fetch' was configured not to fetch |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 79 | them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a |
| 80 | way to clean up all obsolete remote-tracking branches. |
| Junio C Hamano | 2b13527 | 2006-03-18 07:45:42 | [diff] [blame] | 81 | |
| 82 | |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 83 | OPTIONS |
| 84 | ------- |
| 85 | -d:: |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 86 | --delete:: |
| Junio C Hamano | d965706 | 2010-04-18 00:01:03 | [diff] [blame] | 87 | Delete a branch. The branch must be fully merged in its |
| 88 | upstream branch, or in `HEAD` if no upstream was set with |
| Junio C Hamano | 912712b | 2017-12-06 18:04:01 | [diff] [blame] | 89 | `--track` or `--set-upstream-to`. |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 90 | |
| 91 | -D:: |
| Junio C Hamano | 823eebb | 2015-07-10 22:29:34 | [diff] [blame] | 92 | Shortcut for `--delete --force`. |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 93 | |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 94 | --create-reflog:: |
| Junio C Hamano | 1d90cb0 | 2007-07-03 07:05:31 | [diff] [blame] | 95 | Create the branch's reflog. This activates recording of |
| 96 | all changes made to the branch ref, enabling use of date |
| 97 | based sha1 expressions such as "<branchname>@\{yesterday}". |
| Junio C Hamano | e749562 | 2010-04-09 07:18:35 | [diff] [blame] | 98 | Note that in non-bare repositories, reflogs are usually |
| Junio C Hamano | f088858 | 2017-09-28 06:34:39 | [diff] [blame] | 99 | enabled by default by the `core.logAllRefUpdates` config option. |
| Junio C Hamano | a8e4261 | 2017-02-03 21:44:07 | [diff] [blame] | 100 | The negated form `--no-create-reflog` only overrides an earlier |
| 101 | `--create-reflog`, but currently does not negate the setting of |
| Junio C Hamano | f088858 | 2017-09-28 06:34:39 | [diff] [blame] | 102 | `core.logAllRefUpdates`. |
| Junio C Hamano | 341071d | 2006-06-04 07:24:48 | [diff] [blame] | 103 | |
| Junio C Hamano | 560a1f6 | 2006-01-30 04:19:57 | [diff] [blame] | 104 | -f:: |
| Junio C Hamano | 68cfa3a | 2009-08-30 00:22:55 | [diff] [blame] | 105 | --force:: |
| Junio C Hamano | f7e3f47 | 2017-10-20 06:45:24 | [diff] [blame] | 106 | Reset <branchname> to <startpoint>, even if <branchname> exists |
| 107 | already. Without `-f`, 'git branch' refuses to change an existing branch. |
| Junio C Hamano | 823eebb | 2015-07-10 22:29:34 | [diff] [blame] | 108 | In combination with `-d` (or `--delete`), allow deleting the |
| 109 | branch irrespective of its merged status. In combination with |
| 110 | `-m` (or `--move`), allow renaming the branch even if the new |
| Junio C Hamano | 139b7d1 | 2017-10-03 07:10:59 | [diff] [blame] | 111 | branch name already exists, the same applies for `-c` (or `--copy`). |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 112 | |
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 113 | -m:: |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 114 | --move:: |
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 115 | Move/rename a branch and the corresponding reflog. |
| 116 | |
| 117 | -M:: |
| Junio C Hamano | 823eebb | 2015-07-10 22:29:34 | [diff] [blame] | 118 | Shortcut for `--move --force`. |
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 119 | |
| Junio C Hamano | 139b7d1 | 2017-10-03 07:10:59 | [diff] [blame] | 120 | -c:: |
| 121 | --copy:: |
| 122 | Copy a branch and the corresponding reflog. |
| 123 | |
| 124 | -C:: |
| 125 | Shortcut for `--copy --force`. |
| 126 | |
| Junio C Hamano | 4aa0bcc | 2010-03-03 05:13:12 | [diff] [blame] | 127 | --color[=<when>]:: |
| Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 128 | Color branches to highlight current, local, and |
| 129 | remote-tracking branches. |
| Junio C Hamano | 4aa0bcc | 2010-03-03 05:13:12 | [diff] [blame] | 130 | The value must be always (the default), never, or auto. |
| Junio C Hamano | eb69295 | 2007-01-03 22:02:12 | [diff] [blame] | 131 | |
| 132 | --no-color:: |
| 133 | Turn off branch colors, even when the configuration file gives the |
| 134 | default to color output. |
| Junio C Hamano | 4aa0bcc | 2010-03-03 05:13:12 | [diff] [blame] | 135 | Same as `--color=never`. |
| Junio C Hamano | eb69295 | 2007-01-03 22:02:12 | [diff] [blame] | 136 | |
| Junio C Hamano | 52b1cfb | 2016-12-20 00:18:36 | [diff] [blame] | 137 | -i:: |
| 138 | --ignore-case:: |
| 139 | Sorting and filtering branches are case insensitive. |
| 140 | |
| Junio C Hamano | 22700fb | 2012-05-03 23:07:25 | [diff] [blame] | 141 | --column[=<options>]:: |
| 142 | --no-column:: |
| 143 | Display branch listing in columns. See configuration variable |
| 144 | column.branch for option syntax.`--column` and `--no-column` |
| 145 | without options are equivalent to 'always' and 'never' respectively. |
| 146 | + |
| 147 | This option is only applicable in non-verbose mode. |
| 148 | |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 149 | -r:: |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 150 | --remotes:: |
| Junio C Hamano | 63ef0ac | 2006-12-22 07:28:18 | [diff] [blame] | 151 | List or delete (if used with -d) the remote-tracking branches. |
| Junio C Hamano | fe9acab | 2006-11-24 12:10:55 | [diff] [blame] | 152 | |
| 153 | -a:: |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 154 | --all:: |
| Junio C Hamano | fe9acab | 2006-11-24 12:10:55 | [diff] [blame] | 155 | List both remote-tracking branches and local branches. |
| Junio C Hamano | 560a1f6 | 2006-01-30 04:19:57 | [diff] [blame] | 156 | |
| Junio C Hamano | 980e61e | 2018-09-17 22:45:52 | [diff] [blame] | 157 | -l:: |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 158 | --list:: |
| Junio C Hamano | 2affb96 | 2017-03-28 22:01:40 | [diff] [blame] | 159 | List branches. With optional `<pattern>...`, e.g. `git |
| 160 | branch --list 'maint-*'`, list only the branches that match |
| 161 | the pattern(s). |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 162 | |
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 163 | -v:: |
| Junio C Hamano | 4f07aec | 2012-09-25 19:08:44 | [diff] [blame] | 164 | -vv:: |
| Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 165 | --verbose:: |
| Junio C Hamano | 8fb66e5 | 2011-10-05 20:59:51 | [diff] [blame] | 166 | When in list mode, |
| 167 | show sha1 and commit subject line for each head, along with |
| Junio C Hamano | 98e32c3 | 2009-04-13 02:39:53 | [diff] [blame] | 168 | relationship to upstream branch (if any). If given twice, print |
| Junio C Hamano | 4f07aec | 2012-09-25 19:08:44 | [diff] [blame] | 169 | the name of the upstream branch, as well (see also `git remote |
| 170 | show <remote>`). |
| Junio C Hamano | 53edd07 | 2006-11-25 10:05:21 | [diff] [blame] | 171 | |
| Junio C Hamano | 51f87de | 2012-04-16 21:18:54 | [diff] [blame] | 172 | -q:: |
| 173 | --quiet:: |
| 174 | Be more quiet when creating or deleting a branch, suppressing |
| 175 | non-error messages. |
| 176 | |
| Junio C Hamano | 53edd07 | 2006-11-25 10:05:21 | [diff] [blame] | 177 | --abbrev=<length>:: |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 178 | Alter the sha1's minimum display length in the output listing. |
| Junio C Hamano | 6e41cb3 | 2011-08-29 07:12:49 | [diff] [blame] | 179 | The default value is 7 and can be overridden by the `core.abbrev` |
| 180 | config option. |
| Junio C Hamano | 53edd07 | 2006-11-25 10:05:21 | [diff] [blame] | 181 | |
| Junio C Hamano | a3fccdf | 2007-03-03 05:18:26 | [diff] [blame] | 182 | --no-abbrev:: |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 183 | Display the full sha1s in the output listing rather than abbreviating them. |
| Junio C Hamano | a3fccdf | 2007-03-03 05:18:26 | [diff] [blame] | 184 | |
| Junio C Hamano | 89bdb3b | 2009-05-10 06:48:14 | [diff] [blame] | 185 | -t:: |
| Junio C Hamano | 1b50ce9 | 2007-10-03 12:05:53 | [diff] [blame] | 186 | --track:: |
| Junio C Hamano | 79f4c7c | 2013-09-20 21:03:37 | [diff] [blame] | 187 | When creating a new branch, set up `branch.<name>.remote` and |
| 188 | `branch.<name>.merge` configuration entries to mark the |
| Junio C Hamano | 3bd66e9 | 2009-04-18 06:17:56 | [diff] [blame] | 189 | start-point branch as "upstream" from the new branch. This |
| 190 | configuration will tell git to show the relationship between the |
| 191 | two branches in `git status` and `git branch -v`. Furthermore, |
| 192 | it directs `git pull` without arguments to pull from the |
| 193 | upstream when the new branch is checked out. |
| 194 | + |
| Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 195 | This behavior is the default when the start point is a remote-tracking branch. |
| Junio C Hamano | 322c624 | 2015-03-23 21:32:46 | [diff] [blame] | 196 | Set the branch.autoSetupMerge configuration variable to `false` if you |
| Junio C Hamano | 92d8037 | 2016-07-13 22:00:05 | [diff] [blame] | 197 | want `git checkout` and `git branch` to always behave as if `--no-track` |
| Junio C Hamano | 3bd66e9 | 2009-04-18 06:17:56 | [diff] [blame] | 198 | were given. Set it to `always` if you want this behavior when the |
| Junio C Hamano | 97bcb48 | 2010-11-25 03:16:07 | [diff] [blame] | 199 | start-point is either a local or remote-tracking branch. |
| Junio C Hamano | 1b50ce9 | 2007-10-03 12:05:53 | [diff] [blame] | 200 | |
| 201 | --no-track:: |
| Junio C Hamano | 3bd66e9 | 2009-04-18 06:17:56 | [diff] [blame] | 202 | Do not set up "upstream" configuration, even if the |
| Junio C Hamano | 322c624 | 2015-03-23 21:32:46 | [diff] [blame] | 203 | branch.autoSetupMerge configuration variable is true. |
| Junio C Hamano | 1b50ce9 | 2007-10-03 12:05:53 | [diff] [blame] | 204 | |
| Junio C Hamano | 57827fb | 2010-01-23 03:02:50 | [diff] [blame] | 205 | --set-upstream:: |
| Junio C Hamano | bc39b7d | 2017-09-06 04:37:23 | [diff] [blame] | 206 | As this option had confusing syntax, it is no longer supported. |
| 207 | Please use `--track` or `--set-upstream-to` instead. |
| Junio C Hamano | 57827fb | 2010-01-23 03:02:50 | [diff] [blame] | 208 | |
| Junio C Hamano | eccdd4a | 2012-09-10 23:28:17 | [diff] [blame] | 209 | -u <upstream>:: |
| 210 | --set-upstream-to=<upstream>:: |
| 211 | Set up <branchname>'s tracking information so <upstream> is |
| 212 | considered <branchname>'s upstream branch. If no <branchname> |
| 213 | is specified, then it defaults to the current branch. |
| 214 | |
| 215 | --unset-upstream:: |
| 216 | Remove the upstream information for <branchname>. If no branch |
| 217 | is specified it defaults to the current branch. |
| 218 | |
| Junio C Hamano | 515ab1d | 2011-12-09 23:41:20 | [diff] [blame] | 219 | --edit-description:: |
| 220 | Open an editor and edit the text to explain what the branch is |
| Junio C Hamano | 7db630e | 2015-09-17 20:26:22 | [diff] [blame] | 221 | for, to be used by various other commands (e.g. `format-patch`, |
| 222 | `request-pull`, and `merge` (if enabled)). Multi-line explanations |
| 223 | may be used. |
| Junio C Hamano | 515ab1d | 2011-12-09 23:41:20 | [diff] [blame] | 224 | |
| Junio C Hamano | cae88e2 | 2012-03-09 00:13:20 | [diff] [blame] | 225 | --contains [<commit>]:: |
| 226 | Only list branches which contain the specified commit (HEAD |
| Junio C Hamano | b5e079f | 2013-02-08 00:02:52 | [diff] [blame] | 227 | if not specified). Implies `--list`. |
| Junio C Hamano | 47d68a5 | 2008-05-06 06:35:40 | [diff] [blame] | 228 | |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 229 | --no-contains [<commit>]:: |
| 230 | Only list branches which don't contain the specified commit |
| 231 | (HEAD if not specified). Implies `--list`. |
| 232 | |
| Junio C Hamano | c0e55e7 | 2009-10-10 00:56:29 | [diff] [blame] | 233 | --merged [<commit>]:: |
| 234 | Only list branches whose tips are reachable from the |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 235 | specified commit (HEAD if not specified). Implies `--list`, |
| 236 | incompatible with `--no-merged`. |
| Junio C Hamano | 47d68a5 | 2008-05-06 06:35:40 | [diff] [blame] | 237 | |
| Junio C Hamano | c0e55e7 | 2009-10-10 00:56:29 | [diff] [blame] | 238 | --no-merged [<commit>]:: |
| 239 | Only list branches whose tips are not reachable from the |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 240 | specified commit (HEAD if not specified). Implies `--list`, |
| 241 | incompatible with `--merged`. |
| Junio C Hamano | 47d68a5 | 2008-05-06 06:35:40 | [diff] [blame] | 242 | |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 243 | <branchname>:: |
| 244 | The name of the branch to create or delete. |
| Junio C Hamano | b2f5edd | 2006-05-21 10:50:09 | [diff] [blame] | 245 | The new branch name must pass all checks defined by |
| Junio C Hamano | 35738e8 | 2008-01-07 07:55:46 | [diff] [blame] | 246 | linkgit:git-check-ref-format[1]. Some of these checks |
| Junio C Hamano | b2f5edd | 2006-05-21 10:50:09 | [diff] [blame] | 247 | may restrict the characters allowed in a branch name. |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 248 | |
| Junio C Hamano | 560a1f6 | 2006-01-30 04:19:57 | [diff] [blame] | 249 | <start-point>:: |
| Junio C Hamano | c0e55e7 | 2009-10-10 00:56:29 | [diff] [blame] | 250 | The new branch head will point to this commit. It may be |
| 251 | given as a branch name, a commit-id, or a tag. If this |
| 252 | option is omitted, the current HEAD will be used instead. |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 253 | |
| Junio C Hamano | e7935c4 | 2006-12-13 21:32:17 | [diff] [blame] | 254 | <oldbranch>:: |
| 255 | The name of an existing branch to rename. |
| 256 | |
| 257 | <newbranch>:: |
| 258 | The new name for an existing branch. The same restrictions as for |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 259 | <branchname> apply. |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 260 | |
| Junio C Hamano | b0a1e83 | 2015-10-15 23:08:31 | [diff] [blame] | 261 | --sort=<key>:: |
| 262 | Sort based on the key given. Prefix `-` to sort in descending |
| 263 | order of the value. You may use the --sort=<key> option |
| 264 | multiple times, in which case the last key becomes the primary |
| 265 | key. The keys supported are the same as those in `git |
| Junio C Hamano | ae66dc5 | 2018-08-27 21:57:40 | [diff] [blame] | 266 | for-each-ref`. Sort order defaults to the value configured for the |
| 267 | `branch.sort` variable if exists, or to sorting based on the |
| Junio C Hamano | b0a1e83 | 2015-10-15 23:08:31 | [diff] [blame] | 268 | full refname (including `refs/...` prefix). This lists |
| 269 | detached HEAD (if present) first, then local branches and |
| Junio C Hamano | ae66dc5 | 2018-08-27 21:57:40 | [diff] [blame] | 270 | finally remote-tracking branches. See linkgit:git-config[1]. |
| Junio C Hamano | b0a1e83 | 2015-10-15 23:08:31 | [diff] [blame] | 271 | |
| 272 | |
| 273 | --points-at <object>:: |
| 274 | Only list branches of the given object. |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 275 | |
| Junio C Hamano | cbe0eb2 | 2017-02-27 23:37:49 | [diff] [blame] | 276 | --format <format>:: |
| Junio C Hamano | a4ff729 | 2017-08-23 21:56:43 | [diff] [blame] | 277 | A string that interpolates `%(fieldname)` from a branch ref being shown |
| 278 | and the object it points at. The format is the same as |
| Junio C Hamano | cbe0eb2 | 2017-02-27 23:37:49 | [diff] [blame] | 279 | that of linkgit:git-for-each-ref[1]. |
| 280 | |
| Junio C Hamano | 7da67f7 | 2017-11-29 01:12:47 | [diff] [blame] | 281 | CONFIGURATION |
| 282 | ------------- |
| 283 | `pager.branch` is only respected when listing branches, i.e., when |
| 284 | `--list` is used or implied. The default is to use a pager. |
| 285 | See linkgit:git-config[1]. |
| 286 | |
| Junio C Hamano | b9d9d90 | 2018-05-23 07:07:42 | [diff] [blame] | 287 | EXAMPLES |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 288 | -------- |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 289 | |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 290 | Start development from a known tag:: |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 291 | + |
| 292 | ------------ |
| 293 | $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6 |
| 294 | $ cd my2.6 |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 295 | $ git branch my2.6.14 v2.6.14 <1> |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 296 | $ git checkout my2.6.14 |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 297 | ------------ |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 298 | + |
| 299 | <1> This step and the next one could be combined into a single step with |
| Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame^] | 300 | "checkout -b my2.6.14 v2.6.14". |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 301 | |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 302 | Delete an unneeded branch:: |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 303 | + |
| 304 | ------------ |
| 305 | $ git clone git://git.kernel.org/.../git.git my.git |
| 306 | $ cd my.git |
| Junio C Hamano | 18b6ff3 | 2007-07-17 10:40:26 | [diff] [blame] | 307 | $ git branch -d -r origin/todo origin/html origin/man <1> |
| 308 | $ git branch -D test <2> |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 309 | ------------ |
| 310 | + |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 311 | <1> Delete the remote-tracking branches "todo", "html" and "man". The next |
| Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame^] | 312 | 'fetch' or 'pull' will create them again unless you configure them not to. |
| 313 | See linkgit:git-fetch[1]. |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 314 | <2> Delete the "test" branch even if the "master" branch (or whichever branch |
| Junio C Hamano | 2567b32 | 2019-02-05 23:33:56 | [diff] [blame^] | 315 | is currently checked out) does not have all commits from the test branch. |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 316 | |
| 317 | |
| Junio C Hamano | b9d9d90 | 2018-05-23 07:07:42 | [diff] [blame] | 318 | NOTES |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 319 | ----- |
| 320 | |
| Junio C Hamano | fd83b8e | 2009-03-22 08:21:41 | [diff] [blame] | 321 | If you are creating a branch that you want to checkout immediately, it is |
| Junio C Hamano | c8d88c2 | 2006-04-29 07:02:01 | [diff] [blame] | 322 | easier to use the git checkout command with its `-b` option to create |
| 323 | a branch and check it out with a single command. |
| 324 | |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 325 | The options `--contains`, `--no-contains`, `--merged` and `--no-merged` |
| 326 | serve four related but different purposes: |
| Junio C Hamano | 47d68a5 | 2008-05-06 06:35:40 | [diff] [blame] | 327 | |
| 328 | - `--contains <commit>` is used to find all branches which will need |
| 329 | special attention if <commit> were to be rebased or amended, since those |
| 330 | branches contain the specified <commit>. |
| 331 | |
| Junio C Hamano | 59a5f53 | 2017-04-11 08:38:02 | [diff] [blame] | 332 | - `--no-contains <commit>` is the inverse of that, i.e. branches that don't |
| 333 | contain the specified <commit>. |
| 334 | |
| Junio C Hamano | 47d68a5 | 2008-05-06 06:35:40 | [diff] [blame] | 335 | - `--merged` is used to find all branches which can be safely deleted, |
| 336 | since those branches are fully contained by HEAD. |
| 337 | |
| 338 | - `--no-merged` is used to find branches which are candidates for merging |
| 339 | into HEAD, since those branches are not fully contained by HEAD. |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 340 | |
| Junio C Hamano | c276ec7 | 2009-08-26 01:35:22 | [diff] [blame] | 341 | SEE ALSO |
| 342 | -------- |
| 343 | linkgit:git-check-ref-format[1], |
| 344 | linkgit:git-fetch[1], |
| Junio C Hamano | c0e55e7 | 2009-10-10 00:56:29 | [diff] [blame] | 345 | linkgit:git-remote[1], |
| 346 | link:user-manual.html#what-is-a-branch[``Understanding history: What is |
| 347 | a branch?''] in the Git User's Manual. |
| Junio C Hamano | c276ec7 | 2009-08-26 01:35:22 | [diff] [blame] | 348 | |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 349 | GIT |
| 350 | --- |
| Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 351 | Part of the linkgit:git[1] suite |