Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 查找标记名与模式匹配的第一个提交_Git - Fatal编程技术网

Git 查找标记名与模式匹配的第一个提交

Git 查找标记名与模式匹配的第一个提交,git,Git,我试图找到第一个具有特定表达式的标记(例如,以“v”开头),并获得该表达式。我们从某个提交开始,然后返回到时间,以找到与该表达式对应的第一个标记 像这样: (v1.0.3) (fix) (START)(HEAD) 1 --- 2 --- 3 --- 4 ---5 --- 6 --- 7 v1.0.3是一个标签 fix是一个标签 开始是我们开始搜索的提交 这将返回4,因为v1.0.3的开始是4次提交 我发现了一些类似的资源: 第一个对我不起作用,因为它需要在WIND

我试图找到第一个具有特定表达式的标记(例如,以“v”开头),并获得该表达式。我们从某个提交开始,然后返回到时间,以找到与该表达式对应的第一个标记

像这样:

   (v1.0.3)     (fix)     (START)(HEAD)
1 --- 2 --- 3 --- 4 ---5 --- 6 --- 7
  • v1.0.3是一个标签
  • fix是一个标签
  • 开始是我们开始搜索的提交
这将返回4,因为v1.0.3的开始是4次提交

我发现了一些类似的资源:

第一个对我不起作用,因为它需要在WINDOWS上运行,第二个我就是没法工作。(这是漫长的一天,我真的无法解释原因)

希望这能确保问题不会被标记为重复

它必须在Windows上运行,因此首选在Windows上运行的答案。

您可以使用
git log
上的
--tags=
选项。从手册页:

       --tags[=<pattern>]
       Pretend as if all the refs in refs/tags are listed on the command
       line as <commit>. If <pattern> is given, limit tags to ones
       matching given shell glob. If pattern lacks ?, *, or [, /* at the
       end is implied.
--标记[=]
假装命令中列出了参照/标记中的所有参照
行as。如果给定,则将标记限制为1
匹配给定的shell glob。如果图案在底部缺少?、*、或[、/*
这意味着结束。

要查找以
v
开头的所有内容,您可以使用
git log--tags=v*
(或者省略星号,因为它是隐含的)

您所描述的内容看起来非常像“git descripe”:


“66”是指与模式匹配的最新标记后的提交次数。

所说的“第一”,是指最接近开始的次数吗?@max630是,时间从6开始追溯到2(v1.0.3)我已经读到使用
log
查找提交是不好的,应该使用
rev list
来查找提交。如果我错了,请纠正我的错误?这也导致了0个结果。@max630的答案解决了我的问题很高兴听到这个消息!我很想知道不使用log查找提交的来源:)
$ git describe --tags --match 'v*'
v2.16.1.windows.1-66-g72409919f5