You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出Git仓库中指定时间之后创建的所有标签?

按标签创建时间筛选Git标签的方法

要筛选出指定时间戳之后实际创建的Git标签(而非标签关联提交的时间),可以通过以下两种方式实现:

方法一:使用git for-each-ref内置筛选(Git 2.13+ 推荐)

Git 2.13及以上版本支持--filter选项,可直接基于标签的创建时间(taggerdate)筛选,命令如下:

git for-each-ref --sort=taggerdate --format '%(tag)' --filter='taggerdate:>=2023-07-16T00:00:00-04:00' refs/tags
  • --filter='taggerdate:>=<时间戳>':指定筛选条件,仅保留创建时间晚于等于目标时间的标签
  • --format '%(tag)':仅输出标签名称,如需查看更多信息可调整格式(如%(tag) %(taggerdate))
  • --sort=taggerdate:按标签创建时间排序(可选)
  • refs/tags:限定只遍历标签引用,避免处理其他类型的引用

方法二:结合awk过滤(兼容旧版Git)

如果你的Git版本低于2.13,可先输出标签的创建时间戳,再用awk做数值比较:

  1. 先通过date命令生成目标时间的UNIX时间戳(以美国东部时区2023-07-16午夜为例):
date -d "2023-07-16 00:00:00 EDT" +%s
# 输出结果为 1689470400
  1. 用git for-each-ref结合awk筛选:
git for-each-ref --sort=taggerdate --format '%(tag) %(taggerdate:unix)' refs/tags | awk '$2 >= 1689470400 {print $1}'
  • %(taggerdate:unix):将标签创建时间转为UNIX时间戳,方便数值比较
  • awk语句判断时间戳大于等于目标值时,输出对应的标签名称

注意事项

轻量标签(非附注标签)没有taggerdate属性,因为它们仅作为提交的引用,不包含创建时间、创建者等元数据。这类标签无法通过创建时间筛选,若需纳入统计,只能基于其关联提交的时间(即你最初尝试的git log方法),但这不符合"标签实际创建时间"的需求,请根据场景选择。

内容的提问来源于stack exchange,提问作者darkstar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:06:25