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
分别相当于always
和never
。 -
此选项仅适用于非言语模式。
- -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>.remote
和branch.<name>.merge
配置条目以设置新分支的“上游”跟踪配置。git status
和git branch -v
中显示两个分支之间的关系。此外,当签出新分支时,它会指示不带参数的 git pull 从上游拉取。 -
根据可选参数选择确切的上游分支:
-t
、--track
或--track=direct
表示将起点分支本身用作上游;--track=inherit
表示复制起点分支的上游配置。 -
branch.autoSetupMerge
配置变量指定了git switch
、git checkout
和git branch
在既没有指定--track
也没有指定--no-track
时的行为: -
只要起点是远程跟踪分支,默认选项
true
的行为就好像给出了--track=direct
。false
的行为就像给出了--no-track
一样。always
表现得好像给出了--track=direct
。inherit
的行为就像给出了--track=inherit
一样。simple
的行为好像--track=direct
仅在起点是远程跟踪分支并且新分支与远程分支具有相同名称时才给出。 -
branch.<name>.remote
和branch.<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-patch
,request-pull
和merge
(如果启用))。可以使用多行说明。 - --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)
的字符串。