返回顶部
本页目录

branch

列表、创建或删除分支

实例

列出所有本地分支

                            
  • git branch

列出所有远程分支

                            
  • git branch -r

列出所有本地分支和远程分支

                            
  • git branch -a

新建一个分支,但依然停留在当前分支

                            
  • git branch [branch-name]

新建一个分支,并切换到该分支

                            
  • git checkout -b [branch]

新建一个分支,指向指定commit

                            
  • git branch [branch] [commit]

新建一个分支,与指定的远程分支建立追踪关系

                            
  • git branch --track [branch] [remote-branch]

建立追踪关系,在现有分支与指定的远程分支之间

                            
  • git branch --set-upstream [branch] [remote-branch]

删除分支

                            
  • git branch -d [branch-name]

删除远程分支

                            
  • git push origin --delete [branch-name]
  • git branch -dr [remote/branch]

选项

-d
--delete

删除分支。如果未使用 --track--set-upstream-to 设置上游,则该分支必须在其上游分支或 HEAD 中完全合并。

-D

--delete --force 的快捷方式。

--create-reflog

创建分支的 reflog。这将激活对分支 ref 所做的所有更改的记录,从而可以使用基于日期的 sha1 表达式,例如“@{yesterday}”。请注意,在非裸存储库中,引用日志通常由 core.logAllRefUpdates 配置选项默认启用。否定形式 --no-create-reflog 仅覆盖较早的 --create-reflog ,但当前不否定 core.logAllRefUpdates 的设置。

-f
--force

<branchname> 重置为 <startpoint>,即使 <branchname> 已经存在。没有 -f git branch 拒绝更改现有分支。结合 -d (或 --delete ),允许删除分支,而不管其合并状态如何,或者它是否指向有效提交。与 -m (或 --move )结合使用,即使新分支名称已存在,也允许重命名分支,同样适用于 -c (或 --copy )。

-m
--move

移动/重命名一个分支,连同其配置和记录。

-M

--move --force 的快捷方式。

-c
--copy

复制一个分支,以及它的配置和日志。

-C

--copy --force 的快捷方式。

--color[=`]

用颜色来突出当前、本地和远程跟踪的分支。该值必须是始终(默认)、从不或自动。

--no-color

即使配置文件将颜色输出设置为默认值,也要关闭分支颜色。与 --color=never 相同。

-i
--ignore-case

排序和过滤分支不区分大小写。

--column[=<options>]
--no-column

在列中显示分支列表。没有选项的 --column--no-column 分别相当于 alwaysnever

此选项仅适用于非言语模式。

-r
--remotes

列出或删除(如果与-d一起使用)远程跟踪分支。与 --list 结合使用,以匹配可选模式。

-a
--all

列出远程跟踪分支和本地分支。与 --list 结合使用以匹配可选模式。

-l
--list

列出分支。使用可选的 <pattern>... (例如 git branch --list 'maint-*' ,仅列出与该模式匹配的分支。

--show-current

打印当前分支的名称。在分离的HEAD状态下,不打印任何内容。

-v
-vv
--verbose

在列表模式下,显示每个头的 sha1 和提交主题行,以及与上游分支的关系(如果有)。如果给出两次,则打印链接工作树的路径(如果有)和上游分支的名称.请注意,当前工作树的 HEAD 不会打印其路径(它将始终是您的当前目录)。

-q
--quiet

在创建或删除分支时要更加安静,抑制非错误信息。

--abbrev=<n>

在显示提交对象名称的详细列表中,显示唯一引用该对象的最短前缀,其前缀长度至少为 个十六进制数字。默认值为7,可被 core.abbrev config选项覆盖。

--no-abbrev

在输出列表中显示完整的sha1s,而不是缩写它们。

-t
--track[=(direct|inherit)]

创建新分支时,设置 branch.<name>.remotebranch.<name>.merge 配置条目以设置新分支的“上游”跟踪配置。 git statusgit branch -v 中显示两个分支之间的关系。此外,当签出新分支时,它会指示不带参数的 git pull 从上游拉取。

根据可选参数选择确切的上游分支: -t--track--track=direct 表示将起点分支本身用作上游; --track=inherit 表示复制起点分支的上游配置。

branch.autoSetupMerge 配置变量指定了 git switchgit checkoutgit branch 在既没有指定 --track 也没有指定 --no-track 时的行为:

只要起点是远程跟踪分支,默认选项 true 的行为就好像给出了 --track=directfalse 的行为就像给出了 --no-track 一样。 always 表现得好像给出了 --track=directinherit 的行为就像给出了 --track=inherit 一样。 simple 的行为好像 --track=direct 仅在起点是远程跟踪分支并且新分支与远程分支具有相同名称时才给出。

branch.<name>.remotebranch.<name>.merge 选项的更多讨论

--no-track

不要设置 "上游 "配置,即使设置了 branch.autoSetupMerge 配置变量。

--recurse-submodules

这个选项是实验性的!如果启用了 submodule.propagateBranches ,则导致当前命令递归到子模块中。目前,仅支持创建分支。

用于创建分支时,将在超级项目中创建一个新的分支<branchname>,并在超级项目的<start-point> 中创建所有子模块。在子模块中,分支将指向超级项目的 <start-point> 中的子模块提交,但分支的跟踪信息将基于子模块的分支和远程设置,例如 git branch --recurse-submodules topic origin/main 将创建子模块分支“主题”指向超级项目的“origin/main”中的子模块提交,但跟踪子模块的“origin/main”。

--set-upstream

由于此选项具有令人困惑的语法,因此不再受支持。请改用 --track--set-upstream-to

-u <upstream>
--set-upstream-to=<upstream>

设置<分支名称>的跟踪信息,以便将<上游>视为<分支名称>的上游分支。如果未指定,则默认为当前分支。

--unset-upstream

删除<分支名称>的上游信息。如果未指定任何分支,则默认为当前分支。

--edit-description

打开编辑器并编辑文本以解释分支的用途,该分支将由其他各种命令使用(例如 format-patchrequest-pullmerge (如果启用))。可以使用多行说明。

--contains [<commit>]

仅列出包含指定提交的分支(如果未指定,则为HEAD)。

--no-contains [<commit>]

仅列出不包含指定提交的分支(如果未指定,则为 HEAD)。

--merged [<commit>]

仅列出其提示可从指定提交(如果未指定,则为HEAD)可到达的分支。

--no-merged [<commit>]

仅列出其提示不能从指定提交(如果未指定,则为HEAD)无法到达的分支。

<branchname>

要创建或删除的分支的名称。其中一些检查可能会限制分支名称中允许的字符。

<start-point>

新的分支头将指向这个提交。它可以是一个分支名,一个提交id,或者一个标签。如果省略了这个选项,则会使用当前的头。

<oldbranch>

要重命名的现有分支的名称。

<newbranch>

现有分支的新名称。适用与<分支名称>相同的限制。

--sort=<key>

根据给定的键排序。

--points-at <object>

只列出给定对象的分支。

--format <format>

从显示的分支引用及其指向的对象插入 %(fieldname) 的字符串。