中文 ▾ 主题 ▾ 最新版本 ▾ git-name-rev 上次更新于 2.43.0

名称

git-name-rev - 查找给定修订版本的符号名称

概要

git name-rev [--tags] [--refs=<pattern>]
	       ( --all | --annotate-stdin | <commit-ish>…​ )

描述

查找适合人类理解的、可被 *git rev-parse* 解析的任何格式的修订版本的符号名称。

选项

--tags

不要使用分支名称,而仅使用标签来命名提交

--refs=<pattern>

仅使用名称与给定 shell 模式匹配的引用。 模式可以是分支名称、标签名称或完全限定的引用名称。 如果多次给出,则使用名称与任何给定 shell 模式匹配的引用。 使用 --no-refs 清除任何以前给定的引用模式。

--exclude=<pattern>

不要使用任何名称与给定 shell 模式匹配的引用。 该模式可以是分支名称、标签名称或完全限定的引用名称。 如果多次给出,当引用与任何给定模式匹配时,该引用将被排除。 当与 --refs 一起使用时,引用仅当它至少匹配一个 --refs 模式且不匹配任何 --exclude 模式时才会被用作匹配项。 使用 --no-exclude 清除排除模式列表。

--all

列出从所有引用可访问的所有提交

--annotate-stdin

通过将所有 40 个字符的 SHA-1 十六进制数(例如 $hex)替换为“$hex ($rev_name)”来转换标准输入。 与 --name-only 一起使用时,替换为“$rev_name”,完全省略 $hex。 此选项在旧版本的 Git 中称为 --stdin

例如

$ cat sample.txt

An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907,
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad

$ git name-rev --annotate-stdin <sample.txt

An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907 (master),
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad

$ git name-rev --name-only --annotate-stdin <sample.txt

An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is master,
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
--name-only

不打印 SHA-1 和名称,而只打印名称。 如果与 --tags 一起给出,则通常的“tags/”标签前缀也会从名称中省略,更紧密地匹配 git-describe 的输出。

--no-undefined

当引用未定义时,以错误代码 != 0 退出,而不是打印 undefined

--always

显示唯一缩写的提交对象作为后备。

示例

给定一个提交,找出它相对于本地引用的位置。 假设有人告诉您那个很棒的提交 33db5f4d9027a10e477ccf054b2c1ab94f74c85a。 当然,您会查看提交,但它只会告诉您发生了什么,而不是上下文。

输入 *git name-rev*

% git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940

现在您更明智了,因为您知道它发生在 v0.99 之前的 940 个修订版中。

您可以做的另一件好事是

% git log | git name-rev --annotate-stdin

GIT

属于 git[1] 套件的一部分

scroll-to-top