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

时间:2018-04-06 14:43:52

标签: git

我正在尝试找到具有特定表达式的第一个标记(例如,以“v”开头)并获取该提交SHA。我们从某个提交开始,然后回过头来找到与该表达式对应的第一个标记。

像这样:

   (v1.0.3)     (fix)     (START)(HEAD)
1 --- 2 --- 3 --- 4 ---5 --- 6 --- 7
  • v1.0.3是一个标签
  • fix是一个标签
  • START是我们从
  • 开始搜索的提交

这将返回4,因为START到v1.0.3是4次提交。

我找到了一些这样的资源:

https://atech-mobile.com/blog/git-how-count-commits

How to show git commit using number of commits since a tag

第一个对我没有用,因为这需要在WINDOWS上运行,而第二个我没有开始工作。 (这是漫长的一天,我无法解释原因)。

希望这可以确保问题不会被标记为重复。

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

2 个答案:

答案 0 :(得分:1)

你在描述什么看起来非常像“git describe”:

$ git describe --tags --match 'v*'
v2.16.1.windows.1-66-g72409919f5

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

答案 1 :(得分:0)

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

       --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.

要找到以v开头的所有内容,您可以使用git log --tags=v*(或省略星号,因为它会被暗示)