简体中文 ▾ 主题 ▾ 最新版本 ▾ git-show-branch 上次更新于 2.46.0

名称

git-show-branch - 显示分支及其提交

概要

git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]
		[--current] [--color[=<when>] | --no-color] [--sparse]
		[--more=<n> | --list | --independent | --merge-base]
		[--no-name | --sha1-name] [--topics]
		[(<rev> | <glob>)…​]
git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]

描述

以半图形化的方式,从 <rev><glob> (或 refs/heads 和/或 refs/tags 下的所有引用) 指定的提交开始,显示提交的祖先图。

一次最多只能显示 26 个分支和提交。

如果在命令行中没有给出 <rev> 或 <glob>,则使用 showbranch.default 多值配置项。

选项

<rev>

任意扩展的 SHA-1 表达式 (参见 gitrevisions[7]),通常用于命名分支头或标签。

<glob>

一个匹配 refs/ 下分支或标签名称的 glob 模式。例如,如果你在 refs/heads/topic 下有许多主题分支,给出 topic/* 将会显示所有这些分支。

-r
--remotes

显示远程跟踪分支。

-a
--all

同时显示远程跟踪分支和本地分支。

--current

使用此选项时,如果未在命令行中给出当前分支,则该命令会将当前分支包含在要显示的分支列表中。

--topo-order

默认情况下,分支及其提交以反向时间顺序显示。此选项使它们按拓扑顺序显示 (即,后代提交显示在其父提交之前)。

--date-order

此选项与 --topo-order 类似,在没有父提交先于其所有子提交出现的情况下,提交是根据其提交日期排序的。

--sparse

默认情况下,输出会省略仅从显示的一个提示中可达的合并。此选项使它们可见。

--more=<n>

通常,命令在显示所有分支的共同祖先的提交后停止输出。此标志告诉命令在超出该点后继续显示 <n> 个共同提交。当 <n> 为负数时,只显示给定的 <ref>,而不显示提交祖先树。

--list

--more=-1 的同义词

--merge-base

不显示提交列表,而是确定指定提交的可能合并基。所有合并基都将包含在所有指定的提交中。这与 git-merge-base[1] 处理三个或更多提交的情况不同。

--independent

在给定的 <ref> 中,只显示那些无法从任何其他 <ref> 达到的 <ref>

--no-name

不显示每个提交的命名字符串。

--sha1-name

不使用从分支头到达它们的路径来命名提交 (例如,“master~2” 表示“master”的祖父),而是使用其对象名称的唯一前缀来命名它们。

--topics

只显示不在第一个给定分支上的提交。这有助于跟踪主题分支,通过隐藏主开发线中已有的任何提交。当给出“git show-branch --topics master topic1 topic2”时,这将显示“git rev-list ^master topic1 topic2”提供的修订。

-g
--reflog[=<n>[,<base>]] [<ref>]

显示给定引用的 <n> 条最近的 reflog 条目。如果给出了 <base>,则显示从该条目回溯的 <n> 条。<base> 可以指定为计数或日期。当没有给出显式的 <ref> 参数时,默认为当前分支 (如果 detached,则为 HEAD)。

--color[=<when>]

为每个提交的状态符号 (以下之一:* ! + -) 着色,该状态符号对应于该提交所在的分支。该值必须是 always (默认)、never 或 auto。

--no-color

关闭彩色输出,即使配置文件指定默认彩色输出。与 --color=never 相同。

请注意,--more、--list、--independent 和 --merge-base 选项是互斥的。

输出

给定 N 个 <ref>,前 N 行是其提交消息的单行描述。由 $GIT_DIR/HEAD 指向的分支头前面会加上星号 * 字符,而其他分支头则前面加上 ! 字符。

在这些 N 行之后,会显示每个提交的单行日志,缩进 N 个位置。如果一个提交在第 I 个分支上,则第 I 个缩进字符显示一个 + 符号;否则显示一个空格。合并提交用 - 符号表示。每个提交显示一个短名称,该名称可以用作扩展的 SHA-1 来命名该提交。

以下示例显示了三个分支,“master”、“fixes”和“mhf”。

$ git show-branch master fixes mhf
* [master] Add 'git show-branch'.
 ! [fixes] Introduce "reset type" flag to "git reset"
  ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
---
  + [mhf] Allow "+remote:local" refspec to cause --force when fetching.
  + [mhf~1] Use git-octopus when pulling more than one head.
 +  [fixes] Introduce "reset type" flag to "git reset"
  + [mhf~2] "git fetch --force".
  + [mhf~3] Use .git/remote/origin, not .git/branches/origin.
  + [mhf~4] Make "git pull" and "git fetch" default to origin
  + [mhf~5] Infamous 'octopus merge'
  + [mhf~6] Retire git-parse-remote.
  + [mhf~7] Multi-head fetch.
  + [mhf~8] Start adding the $GIT_DIR/remotes/ support.
*++ [master] Add 'git show-branch'.

这三个分支都从一个共同的提交 [master] 分叉出来,该提交的消息是“Add 'git show-branch'”。“fixes”分支添加了一个提交“Introduce 'reset type' flag to 'git reset'”。“mhf”分支添加了许多其他提交。当前分支是“master”。

示例

如果你将主要分支放在 refs/heads 的正下方,并将主题分支放在其子目录中,则在配置文件中包含以下内容可能会有帮助:

[showbranch]
	default = --topo-order
	default = heads/*

有了这个,不带额外参数的 git show-branch 只会显示主要分支。此外,如果你碰巧在你的主题分支上,它也会被显示。

$ git show-branch --reflog="10,1 hour ago" --list master

显示从 1 小时前的尖端开始的 10 个 reflog 条目。不带 --list,输出还显示了这些尖端之间是如何在拓扑上相互关联的。

配置

本节中以下所有内容均从 git-config[1] 文档中选择性地包含。内容与彼处相同:

showBranch.default

git-show-branch[1] 的默认分支集。参见 git-show-branch[1]

GIT

Git[1] 套件的一部分