相对于特定标签的git版本

时间:2013-06-12 02:00:19

标签: git-tag git-describe

我们在repo中使用多个标记标识符。例如。 ABC-1.3.5.234和DEF-1.2.1.25。 describe命令几乎给了我想要的东西:

git describe --long

ABC-1.3.5.234-33-DEADBEEF

但我真的想知道我历史上最近的DEF标签的价值。有没有办法指定我想用哪个标签作为计算相对距离的基础?我可以使用正则表达式吗?

3 个答案:

答案 0 :(得分:1)

git describe man page很清楚:

  

如果未找到完全匹配,git describe将返回提交历史记录以查找已标记的祖先提交。祖先的标记将与输入committish的SHA-1的缩写一起输出。

     

如果在步行期间找到多个标签,则将选择并输出与输入提交不同的最少提交的标签
  这里提交的最少提交被定义为git log tag..input将显示的提交数量将是可能的最小提交数。

所以你可能要编写一个脚本:

  • git describe
  • 获取找到的提交和提交的git describe
  • 重复,直到找到您要找的标签
  • 在该循环期间在找到的标记对象之上加上所有额外提交的“n”数
  • 构建并输出结果字符串:DEF-xxx-n-DEF_SHA1

答案 1 :(得分:1)

只是偶然发现了这个问题。这可能会帮助:

git describe --match "DEF-*"

答案 2 :(得分:1)

对我来说

> git describe --all --match "<tag>"

tags/v0.0.0pre1-334-gbb55666

成功了!

--all允许搜索所有参考,而不仅仅是标记的参考 --match "<tag>"指定用于计算距离的标签。