Spaces:
Sleeping
Sleeping
'\" t | |
.\" Title: git-branch | |
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] | |
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> | |
.\" Date: 04/24/2023 | |
.\" Manual: Git Manual | |
.\" Source: Git 2.40.1 | |
.\" Language: English | |
.\" | |
.TH "GIT\-BRANCH" "1" "04/24/2023" "Git 2\&.40\&.1" "Git Manual" | |
.\" ----------------------------------------------------------------- | |
.\" * Define some portability stuff | |
.\" ----------------------------------------------------------------- | |
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
.\" http://bugs.debian.org/507673 | |
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html | |
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
.ie \n(.g .ds Aq \(aq | |
.el .ds Aq ' | |
.\" ----------------------------------------------------------------- | |
.\" * set default formatting | |
.\" ----------------------------------------------------------------- | |
.\" disable hyphenation | |
.nh | |
.\" disable justification (adjust text to left margin only) | |
.ad l | |
.\" ----------------------------------------------------------------- | |
.\" * MAIN CONTENT STARTS HERE * | |
.\" ----------------------------------------------------------------- | |
.SH "NAME" | |
git-branch \- List, create, or delete branches | |
.SH "SYNOPSIS" | |
.sp | |
.nf | |
\fIgit branch\fR [\-\-color[=<when>] | \-\-no\-color] [\-\-show\-current] | |
[\-v [\-\-abbrev=<n> | \-\-no\-abbrev]] | |
[\-\-column[=<options>] | \-\-no\-column] [\-\-sort=<key>] | |
[\-\-merged [<commit>]] [\-\-no\-merged [<commit>]] | |
[\-\-contains [<commit>]] [\-\-no\-contains [<commit>]] | |
[\-\-points\-at <object>] [\-\-format=<format>] | |
[(\-r | \-\-remotes) | (\-a | \-\-all)] | |
[\-\-list] [<pattern>\&...] | |
\fIgit branch\fR [\-\-track[=(direct|inherit)] | \-\-no\-track] [\-f] | |
[\-\-recurse\-submodules] <branchname> [<start\-point>] | |
\fIgit branch\fR (\-\-set\-upstream\-to=<upstream> | \-u <upstream>) [<branchname>] | |
\fIgit branch\fR \-\-unset\-upstream [<branchname>] | |
\fIgit branch\fR (\-m | \-M) [<oldbranch>] <newbranch> | |
\fIgit branch\fR (\-c | \-C) [<oldbranch>] <newbranch> | |
\fIgit branch\fR (\-d | \-D) [\-r] <branchname>\&... | |
\fIgit branch\fR \-\-edit\-description [<branchname>] | |
.fi | |
.sp | |
.SH "DESCRIPTION" | |
.sp | |
If \fB\-\-list\fR is given, or if there are no non\-option arguments, existing branches are listed; the current branch will be highlighted in green and marked with an asterisk\&. Any branches checked out in linked worktrees will be highlighted in cyan and marked with a plus sign\&. Option \fB\-r\fR causes the remote\-tracking branches to be listed, and option \fB\-a\fR shows both local and remote branches\&. | |
.sp | |
If a \fB<pattern>\fR is given, it is used as a shell wildcard to restrict the output to matching branches\&. If multiple patterns are given, a branch is shown if it matches any of the patterns\&. | |
.sp | |
Note that when providing a \fB<pattern>\fR, you must use \fB\-\-list\fR; otherwise the command may be interpreted as branch creation\&. | |
.sp | |
With \fB\-\-contains\fR, shows only the branches that contain the named commit (in other words, the branches whose tip commits are descendants of the named commit), \fB\-\-no\-contains\fR inverts it\&. With \fB\-\-merged\fR, only branches merged into the named commit (i\&.e\&. the branches whose tip commits are reachable from the named commit) will be listed\&. With \fB\-\-no\-merged\fR only branches not merged into the named commit will be listed\&. If the <commit> argument is missing it defaults to \fBHEAD\fR (i\&.e\&. the tip of the current branch)\&. | |
.sp | |
The command\(cqs second form creates a new branch head named <branchname> which points to the current \fBHEAD\fR, or <start\-point> if given\&. As a special case, for <start\-point>, you may use \fB"A\&.\&.\&.B"\fR as a shortcut for the merge base of \fBA\fR and \fBB\fR if there is exactly one merge base\&. You can leave out at most one of \fBA\fR and \fBB\fR, in which case it defaults to \fBHEAD\fR\&. | |
.sp | |
Note that this will create the new branch, but it will not switch the working tree to it; use "git switch <newbranch>" to switch to the new branch\&. | |
.sp | |
When a local branch is started off a remote\-tracking branch, Git sets up the branch (specifically the \fBbranch\&.<name>\&.remote\fR and \fBbranch\&.<name>\&.merge\fR configuration entries) so that \fIgit pull\fR will appropriately merge from the remote\-tracking branch\&. This behavior may be changed via the global \fBbranch\&.autoSetupMerge\fR configuration flag\&. That setting can be overridden by using the \fB\-\-track\fR and \fB\-\-no\-track\fR options, and changed later using \fBgit branch \-\-set\-upstream\-to\fR\&. | |
.sp | |
With a \fB\-m\fR or \fB\-M\fR option, <oldbranch> will be renamed to <newbranch>\&. If <oldbranch> had a corresponding reflog, it is renamed to match <newbranch>, and a reflog entry is created to remember the branch renaming\&. If <newbranch> exists, \-M must be used to force the rename to happen\&. | |
.sp | |
The \fB\-c\fR and \fB\-C\fR options have the exact same semantics as \fB\-m\fR and \fB\-M\fR, except instead of the branch being renamed, it will be copied to a new name, along with its config and reflog\&. | |
.sp | |
With a \fB\-d\fR or \fB\-D\fR option, \fB<branchname>\fR will be deleted\&. You may specify more than one branch for deletion\&. If the branch currently has a reflog then the reflog will also be deleted\&. | |
.sp | |
Use \fB\-r\fR together with \fB\-d\fR to delete remote\-tracking branches\&. Note, that it only makes sense to delete remote\-tracking branches if they no longer exist in the remote repository or if \fIgit fetch\fR was configured not to fetch them again\&. See also the \fIprune\fR subcommand of \fBgit-remote\fR(1) for a way to clean up all obsolete remote\-tracking branches\&. | |
.SH "OPTIONS" | |
.PP | |
\-d, \-\-delete | |
.RS 4 | |
Delete a branch\&. The branch must be fully merged in its upstream branch, or in | |
\fBHEAD\fR | |
if no upstream was set with | |
\fB\-\-track\fR | |
or | |
\fB\-\-set\-upstream\-to\fR\&. | |
.RE | |
.PP | |
\-D | |
.RS 4 | |
Shortcut for | |
\fB\-\-delete \-\-force\fR\&. | |
.RE | |
.PP | |
\-\-create\-reflog | |
.RS 4 | |
Create the branch\(cqs reflog\&. This activates recording of all changes made to the branch ref, enabling use of date based sha1 expressions such as "<branchname>@{yesterday}"\&. Note that in non\-bare repositories, reflogs are usually enabled by default by the | |
\fBcore\&.logAllRefUpdates\fR | |
config option\&. The negated form | |
\fB\-\-no\-create\-reflog\fR | |
only overrides an earlier | |
\fB\-\-create\-reflog\fR, but currently does not negate the setting of | |
\fBcore\&.logAllRefUpdates\fR\&. | |
.RE | |
.PP | |
\-f, \-\-force | |
.RS 4 | |
Reset <branchname> to <start\-point>, even if <branchname> exists already\&. Without | |
\fB\-f\fR, | |
\fIgit branch\fR | |
refuses to change an existing branch\&. In combination with | |
\fB\-d\fR | |
(or | |
\fB\-\-delete\fR), allow deleting the branch irrespective of its merged status, or whether it even points to a valid commit\&. In combination with | |
\fB\-m\fR | |
(or | |
\fB\-\-move\fR), allow renaming the branch even if the new branch name already exists, the same applies for | |
\fB\-c\fR | |
(or | |
\fB\-\-copy\fR)\&. | |
.sp | |
Note that | |
\fIgit branch \-f <branchname> [<start\-point>]\fR, even with | |
\fI\-f\fR, refuses to change an existing branch | |
\fB<branchname>\fR | |
that is checked out in another worktree linked to the same repository\&. | |
.RE | |
.PP | |
\-m, \-\-move | |
.RS 4 | |
Move/rename a branch, together with its config and reflog\&. | |
.RE | |
.PP | |
\-M | |
.RS 4 | |
Shortcut for | |
\fB\-\-move \-\-force\fR\&. | |
.RE | |
.PP | |
\-c, \-\-copy | |
.RS 4 | |
Copy a branch, together with its config and reflog\&. | |
.RE | |
.PP | |
\-C | |
.RS 4 | |
Shortcut for | |
\fB\-\-copy \-\-force\fR\&. | |
.RE | |
.PP | |
\-\-color[=<when>] | |
.RS 4 | |
Color branches to highlight current, local, and remote\-tracking branches\&. The value must be always (the default), never, or auto\&. | |
.RE | |
.PP | |
\-\-no\-color | |
.RS 4 | |
Turn off branch colors, even when the configuration file gives the default to color output\&. Same as | |
\fB\-\-color=never\fR\&. | |
.RE | |
.PP | |
\-i, \-\-ignore\-case | |
.RS 4 | |
Sorting and filtering branches are case insensitive\&. | |
.RE | |
.PP | |
\-\-column[=<options>], \-\-no\-column | |
.RS 4 | |
Display branch listing in columns\&. See configuration variable | |
\fBcolumn\&.branch\fR | |
for option syntax\&. | |
\fB\-\-column\fR | |
and | |
\fB\-\-no\-column\fR | |
without options are equivalent to | |
\fIalways\fR | |
and | |
\fInever\fR | |
respectively\&. | |
.sp | |
This option is only applicable in non\-verbose mode\&. | |
.RE | |
.PP | |
\-r, \-\-remotes | |
.RS 4 | |
List or delete (if used with \-d) the remote\-tracking branches\&. Combine with | |
\fB\-\-list\fR | |
to match the optional pattern(s)\&. | |
.RE | |
.PP | |
\-a, \-\-all | |
.RS 4 | |
List both remote\-tracking branches and local branches\&. Combine with | |
\fB\-\-list\fR | |
to match optional pattern(s)\&. | |
.RE | |
.PP | |
\-l, \-\-list | |
.RS 4 | |
List branches\&. With optional | |
\fB<pattern>\&.\&.\&.\fR, e\&.g\&. | |
\fBgit branch \-\-list \*(Aqmaint\-*\*(Aq\fR, list only the branches that match the pattern(s)\&. | |
.RE | |
.PP | |
\-\-show\-current | |
.RS 4 | |
Print the name of the current branch\&. In detached HEAD state, nothing is printed\&. | |
.RE | |
.PP | |
\-v, \-vv, \-\-verbose | |
.RS 4 | |
When in list mode, show sha1 and commit subject line for each head, along with relationship to upstream branch (if any)\&. If given twice, print the path of the linked worktree (if any) and the name of the upstream branch, as well (see also | |
\fBgit remote show <remote>\fR)\&. Note that the current worktree\(cqs HEAD will not have its path printed (it will always be your current directory)\&. | |
.RE | |
.PP | |
\-q, \-\-quiet | |
.RS 4 | |
Be more quiet when creating or deleting a branch, suppressing non\-error messages\&. | |
.RE | |
.PP | |
\-\-abbrev=<n> | |
.RS 4 | |
In the verbose listing that show the commit object name, show the shortest prefix that is at least | |
\fI<n>\fR | |
hexdigits long that uniquely refers the object\&. The default value is 7 and can be overridden by the | |
\fBcore\&.abbrev\fR | |
config option\&. | |
.RE | |
.PP | |
\-\-no\-abbrev | |
.RS 4 | |
Display the full sha1s in the output listing rather than abbreviating them\&. | |
.RE | |
.PP | |
\-t, \-\-track[=(direct|inherit)] | |
.RS 4 | |
When creating a new branch, set up | |
\fBbranch\&.<name>\&.remote\fR | |
and | |
\fBbranch\&.<name>\&.merge\fR | |
configuration entries to set "upstream" tracking configuration for the new branch\&. This configuration will tell git to show the relationship between the two branches in | |
\fBgit status\fR | |
and | |
\fBgit branch \-v\fR\&. Furthermore, it directs | |
\fBgit pull\fR | |
without arguments to pull from the upstream when the new branch is checked out\&. | |
.sp | |
The exact upstream branch is chosen depending on the optional argument: | |
\fB\-t\fR, | |
\fB\-\-track\fR, or | |
\fB\-\-track=direct\fR | |
means to use the start\-point branch itself as the upstream; | |
\fB\-\-track=inherit\fR | |
means to copy the upstream configuration of the start\-point branch\&. | |
.sp | |
The branch\&.autoSetupMerge configuration variable specifies how | |
\fBgit switch\fR, | |
\fBgit checkout\fR | |
and | |
\fBgit branch\fR | |
should behave when neither | |
\fB\-\-track\fR | |
nor | |
\fB\-\-no\-track\fR | |
are specified: | |
.sp | |
The default option, | |
\fBtrue\fR, behaves as though | |
\fB\-\-track=direct\fR | |
were given whenever the start\-point is a remote\-tracking branch\&. | |
\fBfalse\fR | |
behaves as if | |
\fB\-\-no\-track\fR | |
were given\&. | |
\fBalways\fR | |
behaves as though | |
\fB\-\-track=direct\fR | |
were given\&. | |
\fBinherit\fR | |
behaves as though | |
\fB\-\-track=inherit\fR | |
were given\&. | |
\fBsimple\fR | |
behaves as though | |
\fB\-\-track=direct\fR | |
were given only when the start\-point is a remote\-tracking branch and the new branch has the same name as the remote branch\&. | |
.sp | |
See | |
\fBgit-pull\fR(1) | |
and | |
\fBgit-config\fR(1) | |
for additional discussion on how the | |
\fBbranch\&.<name>\&.remote\fR | |
and | |
\fBbranch\&.<name>\&.merge\fR | |
options are used\&. | |
.RE | |
.PP | |
\-\-no\-track | |
.RS 4 | |
Do not set up "upstream" configuration, even if the branch\&.autoSetupMerge configuration variable is set\&. | |
.RE | |
.PP | |
\-\-recurse\-submodules | |
.RS 4 | |
THIS OPTION IS EXPERIMENTAL! Causes the current command to recurse into submodules if | |
\fBsubmodule\&.propagateBranches\fR | |
is enabled\&. See | |
\fBsubmodule\&.propagateBranches\fR | |
in | |
\fBgit-config\fR(1)\&. Currently, only branch creation is supported\&. | |
.sp | |
When used in branch creation, a new branch <branchname> will be created in the superproject and all of the submodules in the superproject\(cqs <start\-point>\&. In submodules, the branch will point to the submodule commit in the superproject\(cqs <start\-point> but the branch\(cqs tracking information will be set up based on the submodule\(cqs branches and remotes e\&.g\&. | |
\fBgit branch \-\-recurse\-submodules topic origin/main\fR | |
will create the submodule branch "topic" that points to the submodule commit in the superproject\(cqs "origin/main", but tracks the submodule\(cqs "origin/main"\&. | |
.RE | |
.PP | |
\-\-set\-upstream | |
.RS 4 | |
As this option had confusing syntax, it is no longer supported\&. Please use | |
\fB\-\-track\fR | |
or | |
\fB\-\-set\-upstream\-to\fR | |
instead\&. | |
.RE | |
.PP | |
\-u <upstream>, \-\-set\-upstream\-to=<upstream> | |
.RS 4 | |
Set up <branchname>\*(Aqs tracking information so <upstream> is considered <branchname>\*(Aqs upstream branch\&. If no <branchname> is specified, then it defaults to the current branch\&. | |
.RE | |
.PP | |
\-\-unset\-upstream | |
.RS 4 | |
Remove the upstream information for <branchname>\&. If no branch is specified it defaults to the current branch\&. | |
.RE | |
.PP | |
\-\-edit\-description | |
.RS 4 | |
Open an editor and edit the text to explain what the branch is for, to be used by various other commands (e\&.g\&. | |
\fBformat\-patch\fR, | |
\fBrequest\-pull\fR, and | |
\fBmerge\fR | |
(if enabled))\&. Multi\-line explanations may be used\&. | |
.RE | |
.PP | |
\-\-contains [<commit>] | |
.RS 4 | |
Only list branches which contain the specified commit (HEAD if not specified)\&. Implies | |
\fB\-\-list\fR\&. | |
.RE | |
.PP | |
\-\-no\-contains [<commit>] | |
.RS 4 | |
Only list branches which don\(cqt contain the specified commit (HEAD if not specified)\&. Implies | |
\fB\-\-list\fR\&. | |
.RE | |
.PP | |
\-\-merged [<commit>] | |
.RS 4 | |
Only list branches whose tips are reachable from the specified commit (HEAD if not specified)\&. Implies | |
\fB\-\-list\fR\&. | |
.RE | |
.PP | |
\-\-no\-merged [<commit>] | |
.RS 4 | |
Only list branches whose tips are not reachable from the specified commit (HEAD if not specified)\&. Implies | |
\fB\-\-list\fR\&. | |
.RE | |
.PP | |
<branchname> | |
.RS 4 | |
The name of the branch to create or delete\&. The new branch name must pass all checks defined by | |
\fBgit-check-ref-format\fR(1)\&. Some of these checks may restrict the characters allowed in a branch name\&. | |
.RE | |
.PP | |
<start\-point> | |
.RS 4 | |
The new branch head will point to this commit\&. It may be given as a branch name, a commit\-id, or a tag\&. If this option is omitted, the current HEAD will be used instead\&. | |
.RE | |
.PP | |
<oldbranch> | |
.RS 4 | |
The name of an existing branch to rename\&. | |
.RE | |
.PP | |
<newbranch> | |
.RS 4 | |
The new name for an existing branch\&. The same restrictions as for <branchname> apply\&. | |
.RE | |
.PP | |
\-\-sort=<key> | |
.RS 4 | |
Sort based on the key given\&. Prefix | |
\fB\-\fR | |
to sort in descending order of the value\&. You may use the \-\-sort=<key> option multiple times, in which case the last key becomes the primary key\&. The keys supported are the same as those in | |
\fBgit for\-each\-ref\fR\&. Sort order defaults to the value configured for the | |
\fBbranch\&.sort\fR | |
variable if exists, or to sorting based on the full refname (including | |
\fBrefs/\&.\&.\&.\fR | |
prefix)\&. This lists detached HEAD (if present) first, then local branches and finally remote\-tracking branches\&. See | |
\fBgit-config\fR(1)\&. | |
.RE | |
.PP | |
\-\-points\-at <object> | |
.RS 4 | |
Only list branches of the given object\&. | |
.RE | |
.PP | |
\-\-format <format> | |
.RS 4 | |
A string that interpolates | |
\fB%(fieldname)\fR | |
from a branch ref being shown and the object it points at\&. The format is the same as that of | |
\fBgit-for-each-ref\fR(1)\&. | |
.RE | |
.SH "CONFIGURATION" | |
.sp | |
\fBpager\&.branch\fR is only respected when listing branches, i\&.e\&., when \fB\-\-list\fR is used or implied\&. The default is to use a pager\&. See \fBgit-config\fR(1)\&. | |
.sp | |
Everything above this line in this section isn\(cqt included from the \fBgit-config\fR(1) documentation\&. The content that follows is the same as what\(cqs found there: | |
.PP | |
branch\&.autoSetupMerge | |
.RS 4 | |
Tells | |
\fIgit branch\fR, | |
\fIgit switch\fR | |
and | |
\fIgit checkout\fR | |
to set up new branches so that | |
\fBgit-pull\fR(1) | |
will appropriately merge from the starting point branch\&. Note that even if this option is not set, this behavior can be chosen per\-branch using the | |
\fB\-\-track\fR | |
and | |
\fB\-\-no\-track\fR | |
options\&. The valid settings are: | |
\fBfalse\fR \(em no automatic setup is done; | |
\fBtrue\fR \(em automatic setup is done when the starting point is a remote\-tracking branch; | |
\fBalways\fR \(em automatic setup is done when the starting point is either a local branch or remote\-tracking branch; | |
\fBinherit\fR \(em if the starting point has a tracking configuration, it is copied to the new branch; | |
\fBsimple\fR \(em automatic setup is done only when the starting point is a remote\-tracking branch and the new branch has the same name as the remote branch\&. This option defaults to true\&. | |
.RE | |
.PP | |
branch\&.autoSetupRebase | |
.RS 4 | |
When a new branch is created with | |
\fIgit branch\fR, | |
\fIgit switch\fR | |
or | |
\fIgit checkout\fR | |
that tracks another branch, this variable tells Git to set up pull to rebase instead of merge (see "branch\&.<name>\&.rebase")\&. When | |
\fBnever\fR, rebase is never automatically set to true\&. When | |
\fBlocal\fR, rebase is set to true for tracked branches of other local branches\&. When | |
\fBremote\fR, rebase is set to true for tracked branches of remote\-tracking branches\&. When | |
\fBalways\fR, rebase will be set to true for all tracking branches\&. See "branch\&.autoSetupMerge" for details on how to set up a branch to track another branch\&. This option defaults to never\&. | |
.RE | |
.PP | |
branch\&.sort | |
.RS 4 | |
This variable controls the sort ordering of branches when displayed by | |
\fBgit-branch\fR(1)\&. Without the "\-\-sort=<value>" option provided, the value of this variable will be used as the default\&. See | |
\fBgit-for-each-ref\fR(1) | |
field names for valid values\&. | |
.RE | |
.PP | |
branch\&.<name>\&.remote | |
.RS 4 | |
When on branch <name>, it tells | |
\fIgit fetch\fR | |
and | |
\fIgit push\fR | |
which remote to fetch from/push to\&. The remote to push to may be overridden with | |
\fBremote\&.pushDefault\fR | |
(for all branches)\&. The remote to push to, for the current branch, may be further overridden by | |
\fBbranch\&.<name>\&.pushRemote\fR\&. If no remote is configured, or if you are not on any branch and there is more than one remote defined in the repository, it defaults to | |
\fBorigin\fR | |
for fetching and | |
\fBremote\&.pushDefault\fR | |
for pushing\&. Additionally, | |
\fB\&.\fR | |
(a period) is the current local repository (a dot\-repository), see | |
\fBbranch\&.<name>\&.merge\fR\*(Aqs final note below\&. | |
.RE | |
.PP | |
branch\&.<name>\&.pushRemote | |
.RS 4 | |
When on branch <name>, it overrides | |
\fBbranch\&.<name>\&.remote\fR | |
for pushing\&. It also overrides | |
\fBremote\&.pushDefault\fR | |
for pushing from branch <name>\&. When you pull from one place (e\&.g\&. your upstream) and push to another place (e\&.g\&. your own publishing repository), you would want to set | |
\fBremote\&.pushDefault\fR | |
to specify the remote to push to for all branches, and use this option to override it for a specific branch\&. | |
.RE | |
.PP | |
branch\&.<name>\&.merge | |
.RS 4 | |
Defines, together with branch\&.<name>\&.remote, the upstream branch for the given branch\&. It tells | |
\fIgit fetch\fR/\fIgit pull\fR/\fIgit rebase\fR | |
which branch to merge and can also affect | |
\fIgit push\fR | |
(see push\&.default)\&. When in branch <name>, it tells | |
\fIgit fetch\fR | |
the default refspec to be marked for merging in FETCH_HEAD\&. The value is handled like the remote part of a refspec, and must match a ref which is fetched from the remote given by "branch\&.<name>\&.remote"\&. The merge information is used by | |
\fIgit pull\fR | |
(which at first calls | |
\fIgit fetch\fR) to lookup the default branch for merging\&. Without this option, | |
\fIgit pull\fR | |
defaults to merge the first refspec fetched\&. Specify multiple values to get an octopus merge\&. If you wish to setup | |
\fIgit pull\fR | |
so that it merges into <name> from another branch in the local repository, you can point branch\&.<name>\&.merge to the desired branch, and use the relative path setting | |
\fB\&.\fR | |
(a period) for branch\&.<name>\&.remote\&. | |
.RE | |
.PP | |
branch\&.<name>\&.mergeOptions | |
.RS 4 | |
Sets default options for merging into branch <name>\&. The syntax and supported options are the same as those of | |
\fBgit-merge\fR(1), but option values containing whitespace characters are currently not supported\&. | |
.RE | |
.PP | |
branch\&.<name>\&.rebase | |
.RS 4 | |
When true, rebase the branch <name> on top of the fetched branch, instead of merging the default branch from the default remote when "git pull" is run\&. See "pull\&.rebase" for doing this in a non branch\-specific manner\&. | |
.sp | |
When | |
\fBmerges\fR | |
(or just | |
\fIm\fR), pass the | |
\fB\-\-rebase\-merges\fR | |
option to | |
\fIgit rebase\fR | |
so that the local merge commits are included in the rebase (see | |
\fBgit-rebase\fR(1) | |
for details)\&. | |
.sp | |
When the value is | |
\fBinteractive\fR | |
(or just | |
\fIi\fR), the rebase is run in interactive mode\&. | |
.sp | |
\fBNOTE\fR: this is a possibly dangerous operation; do | |
\fBnot\fR | |
use it unless you understand the implications (see | |
\fBgit-rebase\fR(1) | |
for details)\&. | |
.RE | |
.PP | |
branch\&.<name>\&.description | |
.RS 4 | |
Branch description, can be edited with | |
\fBgit branch \-\-edit\-description\fR\&. Branch description is automatically added in the format\-patch cover letter or request\-pull summary\&. | |
.RE | |
.SH "EXAMPLES" | |
.PP | |
Start development from a known tag | |
.RS 4 | |
.sp | |
.if n \{\ | |
.RS 4 | |
.\} | |
.nf | |
$ git clone git://git\&.kernel\&.org/pub/scm/\&.\&.\&./linux\-2\&.6 my2\&.6 | |
$ cd my2\&.6 | |
$ git branch my2\&.6\&.14 v2\&.6\&.14 \fB(1)\fR | |
$ git switch my2\&.6\&.14 | |
.fi | |
.if n \{\ | |
.RE | |
.\} | |
.sp | |
\fB1. \fRThis step and the next one could be combined into a single step with "checkout \-b my2\&.6\&.14 v2\&.6\&.14"\&. | |
.br | |
.RE | |
.PP | |
Delete an unneeded branch | |
.RS 4 | |
.sp | |
.if n \{\ | |
.RS 4 | |
.\} | |
.nf | |
$ git clone git://git\&.kernel\&.org/\&.\&.\&./git\&.git my\&.git | |
$ cd my\&.git | |
$ git branch \-d \-r origin/todo origin/html origin/man \fB(1)\fR | |
$ git branch \-D test \fB(2)\fR | |
.fi | |
.if n \{\ | |
.RE | |
.\} | |
.sp | |
\fB1. \fRDelete the remote\-tracking branches "todo", "html" and "man"\&. The next | |
\fIfetch\fR | |
or | |
\fIpull\fR | |
will create them again unless you configure them not to\&. See | |
\fBgit-fetch\fR(1)\&. | |
.br | |
\fB2. \fRDelete the "test" branch even if the "master" branch (or whichever branch is currently checked out) does not have all commits from the test branch\&. | |
.br | |
.RE | |
.PP | |
Listing branches from a specific remote | |
.RS 4 | |
.sp | |
.if n \{\ | |
.RS 4 | |
.\} | |
.nf | |
$ git branch \-r \-l \*(Aq<remote>/<pattern>\*(Aq \fB(1)\fR | |
$ git for\-each\-ref \*(Aqrefs/remotes/<remote>/<pattern>\*(Aq \fB(2)\fR | |
.fi | |
.if n \{\ | |
.RE | |
.\} | |
.sp | |
\fB1. \fRUsing | |
\fB\-a\fR | |
would conflate <remote> with any local branches you happen to have been prefixed with the same <remote> pattern\&. | |
.br | |
\fB2. \fR\fBfor\-each\-ref\fR | |
can take a wide range of options\&. See | |
\fBgit-for-each-ref\fR(1) | |
.br | |
.RE | |
.sp | |
Patterns will normally need quoting\&. | |
.SH "NOTES" | |
.sp | |
If you are creating a branch that you want to switch to immediately, it is easier to use the "git switch" command with its \fB\-c\fR option to do the same thing with a single command\&. | |
.sp | |
The options \fB\-\-contains\fR, \fB\-\-no\-contains\fR, \fB\-\-merged\fR and \fB\-\-no\-merged\fR serve four related but different purposes: | |
.sp | |
.RS 4 | |
.ie n \{\ | |
\h'-04'\(bu\h'+03'\c | |
.\} | |
.el \{\ | |
.sp -1 | |
.IP \(bu 2.3 | |
.\} | |
\fB\-\-contains <commit>\fR | |
is used to find all branches which will need special attention if <commit> were to be rebased or amended, since those branches contain the specified <commit>\&. | |
.RE | |
.sp | |
.RS 4 | |
.ie n \{\ | |
\h'-04'\(bu\h'+03'\c | |
.\} | |
.el \{\ | |
.sp -1 | |
.IP \(bu 2.3 | |
.\} | |
\fB\-\-no\-contains <commit>\fR | |
is the inverse of that, i\&.e\&. branches that don\(cqt contain the specified <commit>\&. | |
.RE | |
.sp | |
.RS 4 | |
.ie n \{\ | |
\h'-04'\(bu\h'+03'\c | |
.\} | |
.el \{\ | |
.sp -1 | |
.IP \(bu 2.3 | |
.\} | |
\fB\-\-merged\fR | |
is used to find all branches which can be safely deleted, since those branches are fully contained by HEAD\&. | |
.RE | |
.sp | |
.RS 4 | |
.ie n \{\ | |
\h'-04'\(bu\h'+03'\c | |
.\} | |
.el \{\ | |
.sp -1 | |
.IP \(bu 2.3 | |
.\} | |
\fB\-\-no\-merged\fR | |
is used to find branches which are candidates for merging into HEAD, since those branches are not fully contained by HEAD\&. | |
.RE | |
.sp | |
When combining multiple \fB\-\-contains\fR and \fB\-\-no\-contains\fR filters, only references that contain at least one of the \fB\-\-contains\fR commits and contain none of the \fB\-\-no\-contains\fR commits are shown\&. | |
.sp | |
When combining multiple \fB\-\-merged\fR and \fB\-\-no\-merged\fR filters, only references that are reachable from at least one of the \fB\-\-merged\fR commits and from none of the \fB\-\-no\-merged\fR commits are shown\&. | |
.SH "SEE ALSO" | |
.sp | |
\fBgit-check-ref-format\fR(1), \fBgit-fetch\fR(1), \fBgit-remote\fR(1), \m[blue]\fB\(lqUnderstanding history: What is a branch?\(rq\fR\m[]\&\s-2\u[1]\d\s+2 in the Git User\(cqs Manual\&. | |
.SH "GIT" | |
.sp | |
Part of the \fBgit\fR(1) suite | |
.SH "NOTES" | |
.IP " 1." 4 | |
\(lqUnderstanding history: What is a branch?\(rq | |
.RS 4 | |
\%git-htmldocs/user-manual.html#what-is-a-branch | |
.RE | |