Git
简体中文 ▾ Topics ▾ Latest version ▾ git-name-rev last updated in 2.44.0

名称

git-name-rev - 为给定的 rev 查找符号名称

概述

git name-rev [--tags] [--refs=<模式>]
	       ( --all | --annotate-stdin | <提交号>…​ )

描述

查找适合人类理解的符号名称,这些名称是以 git rev-parse 可解析的任何格式给出的修订。

选项

--tags

不要使用分支名称,只用标签来命名提交内容

--refs=<模式>

只使用名称符合给定 shell 模式的引用。 该模式可以是分支名称、标记名称或完全限定的引用名称。如果多次给定,则使用名称符合任何给定 shell 模式的引用。使用 --no-refs 可清除之前给出的任何引用模式。

--exclude=<模式>

不要使用其名称与给定的壳模式相匹配的任何引用。该模式可以是分支名称、标签名称或完全合格的引用名称之一。如果多次给定,当一个引用与任何给定的模式匹配时,它将被排除。当与 --refs 一起使用时,只有当一个引用至少与一个 --refs 模式相匹配,并且不与任何 --exclude 模式相匹配时,才会被用作匹配。使用 --no-exclude 来清除排除模式的列表。

--all

列出所有引用所可达的所有提交

--annotate-stdin

通过用 "$hex ($rev_name)" 替换所有 40 个字符的 SHA-1 六位数(比如 $hex)来转换标准输入。 当与 --name-only 一起使用时,用 "$rev_name" 替代,完全省略 $hex。这个选项在旧版本的 Git 中被称为 --stdin

例如:

$ cat sample.txt

缩写版本 2ae0a9cb82 不会被替换。
替换后的全名是 2ae0a9cb8298185a94e5998086f380a355dd8907,
而其目录树对象是 70d105cc79e63b81cfdcb08a15297c23e60b07ad

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

缩写版本 2ae0a9cb82 不会被替换。
替换后的全名是 2ae0a9cb8298185a94e5998086f380a355dd8907(master),
而其目录树对象是 70d105cc79e63b81cfdcb08a15297c23e60b07ad

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

缩写版本 2ae0a9cb82 不会被替换。
替换后的全名是 master,
而其目录树对象是 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