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