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

如何使用GitPython获取远程仓库的已排序标签列表

GitPython 获取远程已排序标签列表方案

1. 同步远程最新标签到本地

你之前执行的git fetch --prune origin "+refs/tags/*:refs/tags/*"命令,可以直接通过GitPython原生API实现,不需要调用shell:

from git import Repo

# 初始化本地仓库实例,替换为你的本地仓库路径
repo = Repo("/path/to/your/local/repo")

# 同步远程origin的所有标签,自动清理远程已删除的本地标签
repo.remotes.origin.fetch(
    refspec="+refs/tags/*:refs/tags/*",
    prune=True
)

参数说明:

  • refspec="+refs/tags/*:refs/tags/*":表示将远程origin的所有标签强制同步到本地标签目录,前缀+代表允许非快进更新
  • prune=True:等价于命令中的--prune参数,会自动删除本地存在、但远程已经不存在的冗余标签

2. 获取已排序的标签列表

提供两种常用的排序规则,按需选择:

按语义化版本号排序

推荐使用该方式,适配v1.2.3这类带前缀的版本号格式,不会出现v10.0.0排在v2.0.0前面的字符串排序问题:

from packaging.version import parse

# 先过滤标签名符合版本号规则的内容,再按版本号升序排列
sorted_tags = sorted(
    (tag for tag in repo.tags if tag.name.startswith("v")),
    key=lambda t: parse(t.name.removeprefix("v")),
    reverse=False  # 改为True可实现降序排列
)

# 打印排序后的标签名
for tag in sorted_tags:
    print(tag.name)

如果没有安装packaging依赖,可执行pip install packaging安装

按标签对应提交时间排序

根据标签绑定的提交的创建时间排序:

# 按提交时间升序排列(越早的排在越前面)
sorted_tags = sorted(
    repo.tags,
    key=lambda t: t.commit.committed_date,
    reverse=False
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:15:02