©
本文档使用
php.cn手册 发布
git-branch - 列出,创建或删除分支
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [--sort=<key>] [(--merged | --no-merged) [<commit>]] [--contains [<commit]] [--no-contains [<commit>]] [--points-at <object>] [--format=<format>] [<pattern>…]git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]git branch --unset-upstream [<branchname>]git branch (-m | -M) [<oldbranch>] <newbranch>git branch (-d | -D) [-r] <branchname>… git branch --edit-description [<branchname>]
如果--list
给出,或者如果没有非选项参数,则列出现有分支; 当前分支将突出显示星号。选项-r
会导致远程追踪分支被列出,选项-a
显示本地和远程分支。如果<pattern>
给出a,则将其用作外壳通配符,以将输出限制为匹配的分支。如果给出多个模式,则显示一个分支,如果它匹配任何模式。请注意,提供时<pattern>
,您必须使用--list
; 否则该命令被解释为分支创建。
与--contains
,仅显示包含指定提交的分支(换句话说,其提示提交的分支是指定提交的后代),将其--no-contains
反转。使用时--merged
,只会将分支合并到指定的提交中(即,其提交提交可从指定的提交中获得的分支)将被列出。随着--no-merged
唯一分支机构不合并到一个名为承诺将陆续上市。如果缺少<commit>参数,则默认为HEAD
(即当前分支的尖端)。
命令的第二种形式创建一个名为<branchname>的新分支头,它指向当前HEAD
或<start-point>(如果给出)。
请注意,这将创建新的分支,但不会将工作树切换到它; 使用“git checkout <newbranch>”切换到新分支。
当一个本地分支从一个远程跟踪分支启动时,Git设置分支(特别是branch.<name>.remote
和branch.<name>.merge
配置条目),以便git pull
从远程跟踪分支适当合并。此行为可能通过全局branch.autoSetupMerge
配置标志进行更改。该设置可以通过使用--track
和--no-track
选项来覆盖,并在稍后使用git branch --set-upstream-to
。
使用-m
或-M
选项,<oldbranch>将被重命名为<newbranch>。如果<oldbranch>具有相应的reflog,则将其重命名为匹配<newbranch>,并且会创建reflog条目以记住分支重命名。如果<newbranch>存在,-M必须用于强制重命名发生。
带有-d
或-D
选项,<branchname>
将被删除。您可以指定多个分支进行删除。如果分支当前有reflog,则reflog也将被删除。
使用-r
连同-d
删除远程跟踪分支。请注意,如果远程跟踪分支不再存在于远程存储库中,或者git fetch
已配置为不再获取它们,则仅删除远程跟踪分支是有意义的。另请参阅prune
git-remote [1] 的子命令,以清除所有过时的远程跟踪分支。
-d --delete
删除分支。该分支必须完全合并到其上游分支中,或者HEAD
如果没有上游设置为--track
或--set-upstream
。
-D
快捷键--delete --force
。
-l --create-reflog
创建分支的reflog。这将激活对分支ref的所有更改的记录,从而可以使用基于日期的sha1表达式,如“<branchname> @ {yesterday}”。请注意,在非裸仓库中,configlog core.logAllRefUpdates
选项通常默认启用reflog 。否定形式--no-create-reflog
只会覆盖较早的形式--create-reflog
,但目前并不否定这种设置core.logAllRefUpdates
。
-f --force
如果<branchname>已存在,请将<branchname>重置为<startpoint>。没有-f
git branch
拒绝改变现有的分支。结合-d
(或--delete
),允许删除分支,而不考虑其合并状态。结合-m
(或--move
),即使新分支名称已存在,也允许重命名分支。
-m --move
移动/重命名分支和相应的reflog。
-M
快捷键--move --force
。
--color=<when>
颜色分支突出显示当前,本地和远程跟踪分支。该值必须始终(默认),永不,或自动。
--no-color
关闭分支颜色,即使配置文件将默认设置为颜色输出。和...一样--color=never
。
-i --ignore-case
排序和过滤分支不区分大小写。
--column=<options> --no-column
在列中显示分支列表。有关选项语法,请参阅配置变量column.branch。--column
与--no-column
不带选项相当于always
和never
分别。
该选项仅适用于非详细模式。
-r --remotes
列出或删除(如果与-d一起使用)远程跟踪分支。
-a --all
列出远程追踪分行和当地分行。
--list
列出分支。使用可选项<pattern>...
,例如git branch --list 'maint-*'
,仅列出与模式匹配的分支。
这不应与此混淆git branch -l <branchname>
,它会创建一个以<branchname>
reflog 命名的分支。详情见--create-reflog
上文。
-v -vv --verbose
在列表模式下,显示sha1并为每个头提交主题行,以及与上游分支(如果有)的关系。如果给出两次,也打印上游分支的名称(另请参阅git remote show <remote>
)。
-q --quiet
创建或删除分支时更安静,抑制非错误消息。
--abbrev=<length>
改变输出列表中sha1的最小显示长度。默认值是7,可以由core.abbrev
config选项覆盖。
--no-abbrev
在输出列表中显示完整的sha1,而不是缩写它们。
-t --track
创建新分支时,设置branch.<name>.remote
和branch.<name>.merge
配置条目以将起点分支标记为新分支的“上游”。这个配置会告诉git显示in git status
和in两个分支之间的关系git branch -v
。此外,它在git pull
没有参数的情况下指示新分支签出时从上游撤出。
当起始点是远程跟踪分支时,此行为是默认行为。false
如果需要git checkout
,git branch
可以将branch.autoSetupMerge配置变量设置为并且始终表现得像--no-track
给定的一样。always
如果您想在起点为本地或远程跟踪分支时想要此行为,请将其设置为。
--no-track
即使branch.autoSetupMerge配置变量为true,也不要设置“上游”配置。
--set-upstream
如果指定的分支尚不存在或者--force
已经给出,则完全相同--track
。否则,--track
在创建分支时设置配置,除非分支指向的地方不更改。
-u <upstream> --set-upstream-to=<upstream>
设置<branchname>的跟踪信息,以便<upstream>被视为<branchname>的上游分支。如果未指定<branchname>,则默认为当前分支。
--unset-upstream
删除<branchname>的上游信息。如果未指定分支,则默认为当前分支。
--edit-description
打开一个编辑器,编辑文本解释分支是干什么用的,通过其他各种命令使用(例如format-patch
,request-pull
和merge
(如果启用))。可以使用多行解释。
--contains <commit>
只列出包含指定提交的分支(如果未指定,则为HEAD)。意味着--list
。
--no-contains <commit>
只列出不包含指定提交的分支(如果未指定,则为HEAD)。意味着--list
。
--merged <commit>
仅列出可从指定提交中获得提示的分支(如果未指定,则为HEAD)。暗示--list
,不符合--no-merged
。
--no-merged <commit>
仅列出提示无法从指定提交中获得的分支(如果未指定,则为HEAD)。暗示--list
,不符合--merged
。
<branchname>
要创建或删除的分支的名称。新的分支名称必须通过由git-check-ref-format [1]定义的所有检查。其中一些检查可能会限制分支名称中允许的字符。
<start-point>
新的分支头将指向这个提交。它可以作为分支名称,提交标识或标签给出。如果省略此选项,则将使用当前的HEAD。
<oldbranch>
要重命名的现有分支的名称。
<newbranch>
现有分支的新名称。与<branchname>相同的限制适用。
--sort=<key>
根据给定的关键字进行排序。前缀-
按值的降序进行排序。您可以多次使用--sort = <key>选项,在这种情况下,最后一个键变为主键。支持的密钥与中的密钥相同git for-each-ref
。排序顺序默认为基于完整的refname(包括refs/...
前缀)排序。这将首先列出分离的HEAD(如果存在),然后列出当地分支和最终远程跟踪分支。
--points-at <object>
只列出给定对象的分支。
--format <format>
%(fieldname)
从显示的分支ref 中插入的字符串以及它指向的对象。格式与git-for-each-ref [1]的格式相同。
从已知标签开始开发
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6$ cd my2.6$ git branch my2.6.14 v2.6.14 (1)$ git checkout my2.6.14
这一步和下一步可以合并成一个单步执行“checkout -b my2.6.14 v2.6.14”。删除一个不需要的分支$ git clone git://git.kernel.org/.../git.git my.git $ cd my.git $ git branch -d -r origin / todo origin / html origin / man(1 )$ git branch -D test(2)
2. 删除远程追踪分支“todo”,“html”和“man”。下一个fetch
或pull
将再次创建它们,除非您将它们配置为不再。参见git-fetch [1]。
3. 即使“主”分支(或当前选中的分支)没有提交来自测试分支的所有提交,也要删除“测试”分支。注意如果您正在创建要立即签出的分支,则它更易于使用其Git的checkout命令-b
选项来创建一个分支,并检查它与单一command.The选项--contains
,--no-contains
,--merged
和--no-merged
服务四个相关但不同的目的:
4. --contains <commit>
用于查找所有需要特别注意的分支,因为这些分支包含指定的<commit>。
--no-contains <commit>
是相反的,即不包含指定的<commit>的分支。
--merged
用于查找可以安全删除的所有分支,因为这些分支完全由HEAD包含。
--no-merged
用于查找合并到HEAD中的候选分支,因为这些分支未被HEAD完全包含。