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