Git-show

什么是 git-show?

git-show 是一个命令行实用程序,用于查看有关 blob、树、标记和提交的扩展详细信息。git-show 对每种对象类型都有特定的行为。

标记显示标记消息和标记中包含的其他对象。树显示树中对象的名称和内容。Blob 显示了 blob 的直接内容。提交显示提交日志消息和提交中变更的比对输出。

Git 对象都是通过引用访问的。默认情况下,git-show 会违反 HEAD 引用。HEAD 引用始终指向当前分支的最后一次提交。因此,您可以使用 git-show 来显示最新提交的日志消息和比对输出。

Git-show 选项

<对象>…

可以传入对一个对象或对象列表的引用,以检查这些特定对象。若未传入显式对象,git-show 命令默认使用 HEAD 引用。

--pretty[=<格式>]

pretty 选项需接受一个次级格式值,其可选值包括:oneline、short、medium、full、fuller、email、raw 以及 format:<字符串>。如果省略,则格式默认为 medium。每种格式选项都是一个不同的模板,用于指定 Git 如何格式化 show 命令的输出。o<code>oneline</code> 选项对于显示提交列表非常有用

--abbrev-commit

此选项用于缩短输出提交 ID 的长度。提交 ID 原本为 40 个字符,在窄屏终端中查看较为不便。将此选项与 --pretty=oneline 结合使用,能够生成极为简洁的 git log 输出。

--no-abbrev-commit

始终显示完整的 40 个字符长度的提交 ID。这将忽略 --abbrev-commit 和任何其他缩写提交 ID 的选项,例如 --oneline format

--oneline

这是使用扩展命令 --pretty=oneline --abbrev-commit 的快捷方式

--encoding[=<编码>]

Git 日志信息的字符编码默认采用 UTF-8 格式。该编码选项可将输出的字符编码切换为其他格式。若您在使用不同字符编码的环境(如亚洲语言终端)中操作 Git,此选项会非常实用。

--expand-tabs=<n>--expand-tabs--no-expand-tabs

这些选项会将日志消息输出中的制表符替换为空格。可设置 n 值来配置制表符展开后对应的空格数量。若未显式指定 n 值,制表符将展开为 8 个空格。--no-expand-tabs 选项等效于将 n=0

--notes=<ref>--no-notes

Git 拥有一个笔记系统,允许将任意“笔记”元数据附加到对象上。使用 git-show 时,这些数据可以被隐藏或筛选。

--show-signature

此选项会将提交信息传递至 gpg 子命令,以此验证该提交是否使用加密签名进行了签名。

git-show 的 pretty 格式


上面讨论的 --pretty 选项接受几个辅助选项来传递 git-show 输出的格式。下面列出了这些辅助选项以及示例模板

Oneline

<sha1> <title line>

Oneline 尝试将尽可能多的信息压缩到一行中

short

commit <sha1>
Author: <author>
<title line>

commit <sha1>
Author: <author>
Date: <author date>
<title line>
<full commit message>

full

commit <sha1>
 Author: <author>
 Commit: <committer>
<title line>
<full commit message>

fuller

commit <sha1>
Author: <author>
AuthorDate: <author date>
Commit: <committer>
CommitDate: <committer date>
<title line>
<full commit message>

电子邮件

From <sha1> <date>
From: <author>
Date: <author date>
Subject: [PATCH] <title line>
<full commit message>

raw

raw 格式会忽略传递给 git-show 命令的其他直接格式化选项,严格按照对象中存储的原始形式输出提交信息。该格式还会无视 --abbrev--no-abbrev 选项,始终显示完整的父提交信息。

格式

format 支持自定义输出格式的设定。其工作方式类似于 C 语言的 printf 命令。--pretty=format 选项需指定一个模板字符串作为次级值。该模板可以访问占位符变量,这些变量将由提交对象中的数据填充。这些占位符如下所示:

  • %H:提交哈希

  • %h:缩写的提交哈希

  • %T:树哈希

  • %t:缩写的树哈希

  • %P:父哈希

  • %p:缩写的父哈希

  • %an:作者名称

  • %aN:作者名称

  • %ae:作者邮箱

  • %aE:作者邮箱

  • %ad:作者日期(格式遵守 --date= 选项)

  • %aD:作者日期(RFC2822 格式)

  • %ar:作者日期(相对时间格式)

  • %at:作者日期(UNIX 时间戳格式)

  • %ai:作者日期(ISO 8601 格式)

  • %cn:提交者名称

  • %cN:提交者名称

  • %ce:提交者邮箱

  • %cE:提交者邮箱

  • %cd:提交者日期

  • %cD:提交者日期(RFC2822 格式)

  • %cr:提交者日期(相对时间格式)

  • %ct:提交者日期(UNIX 时间戳格式)

  • %ci:提交者日期(ISO 8601 格式)

  • %d:引用名称,同 git-log(1) 命令的 --decorate 选项

  • %e:编码

  • %s:主题

  • %f:经过清理的主题行(适用于文件名)

  • %b:正文

  • %N:提交笔记

  • %gD:reflog 选择器,例如 refs/stash@{1}

  • %gd:缩短的 reflog 选择器,例如 stash@{1}

  • %gs:reflog 主题

  • %Cred:将颜色切换为红色

  • %Cgreen:将颜色切换为绿色

  • %Cblue:将颜色切换为蓝色

  • %Creset:重置颜色

  • %C(...):颜色指定(遵循 color.branch.* 配置选项)

  • %m:左侧、右侧或边界标记

  • %n:换行符

  • %%:原始的 %

  • %x00:输出十六进制代码对应的字节

  • %w([[,[,]]]):切换行换行模式,同 git-shortlog 的 -w 选项

git-show 的例子

git show --pretty="" --name-only bd61ad98

这将列出提交中涉及的所有文件

git show REVISION:path/to/file

这将显示文件的特定版本。用 Git sha 替换 REVISON

git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783

这将显示 v2.0.0 标记,也将在 6ef002d74cbc099e1063728cab14ef1fc49c783 处提交

git show commitA...commitD

这将输出从 commitAcommit D 范围内的所有提交

摘要

git-show 是一个非常通用的命令,用于检查 Git 代码存储库中的对象。它可以用来定位特定版本的特定文件。使用 git-show 检查提交范围将输出该范围之间的所有单个提交。git-show 可以成为创建补丁说明和跟踪存储库变更的有用工具。

为您推荐

Bitbucket 博客

DevOps 学习路径

了解有关 Git 的更多信息

在此中心查找更多 Git 指南和资源。