从当前提交获取最新的git标记

从当前提交获取最新的git标记,git,git-tag,Git,Git Tag,我正在尝试从树中的某个点获取最新的git标记 该树如下所示: * 334322c|2016-12-06| (tag: 0.1265, tag: 0.1264) (18 hours ago) * 739392e|2016-12-06| (HEAD -> testbranch, tag: 0.1263, tag: 0.1262) (19 hours ago) * 8ec1add|2016-12-06| (tag: 0.1261, tag: 0.1260, tag: 0.1259) (20 ho

我正在尝试从树中的某个点获取最新的git标记

该树如下所示:

* 334322c|2016-12-06| (tag: 0.1265, tag: 0.1264) (18 hours ago)
* 739392e|2016-12-06| (HEAD -> testbranch, tag: 0.1263, tag: 0.1262) (19 hours ago)
* 8ec1add|2016-12-06| (tag: 0.1261, tag: 0.1260, tag: 0.1259) (20 hours ago)
* 5b2667b|2016-12-06| (tag: 0.1258) (21 hours ago)
* c7ff4bc|2016-12-06| (tag: 0.1257, tag: 0.1256) (22 hours ago)
0.1263
是我正在寻找的git标记

当启用
739392e
时,使用
git descripe--tags
只返回
0.1262
,这是提交时的第一个标记,我不会得到所有候选标记


当启用
739392e
时,使用
git descripe--tags$(git rev list--tags--max count=1)
返回
0.1265
,即树上最新的标记(无论头部在哪里)。

您可以使用
git标记
,列表选项指向正在检查的特定提交:

git tag -l --points-at <commit|object>
git标记-l——指向

如果您使用的是git 2.0或更高版本,它有一个
--sort
选项,允许您按标记日期顺序降序对结果进行排序。

如果您可以按名称对标记进行排序(这似乎合理),您可以使用以下命令:

git标记--指向头部--排序-版本:refname | HEAD-1

如果没有,请首先检查标记上是否设置了committerdate或authordate:

git标记--指向头部--格式='%(*committerdate:iso)%(*authordate:iso)%(refname)%(*objectname)%(objectname)“

这将输出如下内容:

2018-05-28 09:58:06 +0200 2018-05-28 09:58:06 +0200 refs/tags/3.11.47 55a4f6de2b1466d1a2ee60acc53aa12fd5ad07b3 914ac376102a6c7f189453fbcd8737db32b90693
2018-05-28 09:58:06 +0200 2018-05-28 09:58:06 +0200 refs/tags/3.11.46 55a4f6de2b1466d1a2ee60acc53aa12fd5ad07b3 e0d37427b89fbd6c3baa898a1264a9ba3e3ff7f
从这个示例中可以看到,两个标记都具有相同的committerdate和authordate,这意味着我们无法对这些字段进行排序。但是,如果设置正确,则可以使用以下命令:

git标记--指向头部--排序-版本:creatordate | HEAD-1

从git帮助标签

--sort=
根据给定的键进行排序前缀-按值的降序排序。在这种情况下,您可以多次使用
--sort=
选项 最后一个键成为主键。还支持“version:refname”或“v:refname”(标记名被视为版本)。“version:refname”排序 顺序也会受到“versionsort.suffix”配置变量的影响每个ref支持的键与git中的键相同。分类 顺序默认为为tag.sort变量(如果存在)配置的值,否则为字典顺序。参见git配置(1)

以及从每个参考的git帮助中:

对于提交和标记对象,特殊的creatordate和creator字段将根据对象类型对应于提交者或标记者字段中的相应日期或名称电子邮件日期元组。这些用于混合使用带注释的标记和轻量级标记


您尝试过以下方法吗:git log-1--格式=%TAG\u NAME什么是
-格式=%TAG\u NAME
?以下是可用的占位符:
git descripe--tags
给出了一个候选项。列出所有标签,测试每个标签是否指向候选标签。注意,排序只适用于带注释的标签(轻量级标签没有单独的日期)。没有标签日期就没有明显的正确顺序。Quick,哪一个是较新的,
标签:code-噩梦-GREEN
标签:code-GOD-GAME-BLACK
?:-)