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

如何使用Git筛选指定时间段内创建的标签?

筛选指定日期范围的Git标签

你完全不需要单独解析Git命令的输出结果,直接通过git for-each-ref命令搭配常见的shell文本处理工具就能实现精准筛选,一步到位完成需求。

核心思路

首先用git for-each-ref输出带结构化日期的标签列表,这个命令支持自定义输出格式,能把标签名和ISO标准格式的创建日期关联起来,方便后续做筛选操作:

git for-each-ref --format='%(refname:short) %(creatordate:iso)' refs/tags

输出示例(标签名+标准格式日期):

v1.0.0 2008-05-12T14:30:00+08:00
v2.1.0 2015-04-01T09:15:00+08:00
v3.0.0 2016-07-20T16:45:00+08:00

筛选2008年创建的标签

用grep匹配年份即可快速筛选:

git for-each-ref --format='%(refname:short) %(creatordate:iso)' refs/tags | grep '^.* 2008-'

筛选2015年3月2日至2016年8月6日的标签

利用ISO日期字符串可直接按字典序比较的特性,用awk做范围判断:

git for-each-ref --format='%(refname:short) %(creatordate:iso)' refs/tags | awk '$2 >= "2015-03-02" && $2 <= "2016-08-06"'

合并两个筛选条件(2008年 或 指定日期范围)

用awk的逻辑或运算符把两个条件结合,一次性筛选出符合任一要求的标签:

git for-each-ref --format='%(refname:short) %(creatordate:iso)' refs/tags | awk '$2 ~ /^2008-/ || ($2 >= "2015-03-02" && $2 <= "2016-08-06")'

Windows PowerShell环境适配

如果是在Windows下使用PowerShell,也能实现同样的筛选效果:

  • 筛选2008年的标签:
git for-each-ref --format='%(refname:short) %(creatordate:iso)' refs/tags | Where-Object { $_ -match ' 2008-' }
  • 筛选指定日期范围的标签:
git for-each-ref --format='%(refname:short) %(creatordate:iso)' refs/tags | ForEach-Object {
    $parts = $_ -split ' ', 2
    if (($parts[1] -ge '2015-03-02') -and ($parts[1] -le '2016-08-06')) { $_ }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:57:44