使用PyGithub如何获取指定仓库特定分支的最新提交记录
PyGithub获取指定分支最新提交的正确实现
错误原因
你原有代码调用repo.get_commits()时传入的path参数作用为筛选提交记录中修改了指定路径文件的提交,并非用于指定查询分支,传入"tree/"+分支名没有符合筛选条件的提交,因此返回空结果。
正确代码实现
需求说明
实现效果等价于调用Github REST API:https://api.github.com/repos/{所有者}/{仓库名}/commits/{分支名}?per_page=1,即获取指定分支最新的1条提交记录。
遍历仓库所有分支获取每个分支的最新提交
from github import Github # 初始化实例,若访问私有仓库需传入个人访问令牌 g = Github("你的Github个人访问令牌") # 替换为实际的仓库所有者/仓库名 repo = g.get_repo("owner/repo_name") # 获取仓库所有分支 branches = repo.get_branches() for branch in branches: print(f"当前分支:{branch.name}") # sha参数指定查询分支,per_page=1仅返回最新1条提交 commits = repo.get_commits(sha=branch.name, per_page=1) for commit in commits: print(f"最新提交SHA:{commit.sha}") print(f"提交信息:{commit.commit.message}") print(f"提交时间:{commit.commit.author.date}") print("------------------------")
直接获取单个指定分支的最新提交
# 替换为你要查询的目标分支名 target_branch = "main" # 直接取返回结果的第一条即为最新提交 latest_commit = repo.get_commits(sha=target_branch, per_page=1)[0]
参数说明
sha:可传入分支名、标签名、commit SHA值,此处传入分支名即可限定查询范围为对应分支的提交记录per_page:和REST接口参数作用一致,设置单次返回的提交数量,设置为1即可仅拉取最新1条提交,减少不必要的资源消耗
内容的提问来源于stack exchange,提问作者user2722634
相关产品推荐
相关产品推荐

