使用PyGithub获取GitHub仓库指定标签时遇404错误,求正确方法
问题原因
repo.get_git_tag()方法用于获取Git底层标签对象,它接收的参数是标签对象的SHA哈希值,而非标签名称。你传入的3.8.0是标签名称,因此触发404错误。
正确实现方式
方法1:直接通过标签名称获取标签
使用repo.get_tag()方法,该方法支持通过标签名称直接查询,适合大多数场景:
from github import Github # 公开仓库无需令牌,直接初始化即可 g = Github() repo = g.get_repo("telefonicaid/fiware-orion") # 通过标签名称获取标签 tag = repo.get_tag("3.8.0") # 打印标签信息示例 print(f"标签名称:{tag.name}") print(f"对应Commit SHA:{tag.commit.sha}")
方法2:遍历仓库所有标签匹配目标名称
如果需要批量处理或确认标签存在性,可以遍历仓库的标签列表:
from github import Github g = Github() repo = g.get_repo("telefonicaid/fiware-orion") # 遍历所有标签,查找目标名称 target_tag_name = "3.8.0" for tag in repo.get_tags(): if tag.name == target_tag_name: print(f"找到标签:{tag.name},对应Commit:{tag.commit.sha}") break
补充说明
get_tag():用于获取仓库的公开标签信息,包含标签名称、对应Commit等常用字段,是日常获取标签的首选方式。get_git_tag():仅用于获取底层Git标签对象的详细数据(如注解标签的消息、签名信息),需要传入标签对象的SHA值,而非标签名称。
内容的提问来源于stack exchange,提问作者fgalan
相关产品推荐
相关产品推荐

