如何判断GitHub分支是否有Pull Request?PyGitHub调用异常求助
解决建议
确认本地commit已推送到远程GitHub仓库
GitPython获取的是本地仓库的最新commit SHA,如果这个commit还没通过git push同步到远程,GitHub上没有该commit的记录,自然查不到关联的PR。先执行推送操作后再重新尝试查询。指定PR状态参数
PyGithub的commit.get_pulls()方法默认只查询open状态的PR,如果你的PR已经合并或关闭,需要显式指定state="all"来包含所有状态的PR:pulls = commit.get_pulls(state="all")检查PR的合并方式
如果PR是通过** squash合并或变基合并**到主分支的,GitHub会生成新的合并commit SHA,你本地的原commit SHA不会出现在主分支的提交历史中,因此无法通过原SHA查到关联的PR。这种情况可以:- 使用GitHub上显示的合并后SHA进行查询;
- 直接通过仓库的PR列表,根据分支或提交信息定位目标PR。
确认仓库实例的正确性
确保你是通过目标仓库对象调用get_commit(),而非全局GitHub对象。正确的调用方式示例:from github import Github # 初始化并获取目标仓库 g = Github("your_access_token") target_repo = g.get_repo("your_username/your_repo_name") # 获取指定SHA的commit并查询关联PR latest_sha = local_repo.commit().hexsha commit = target_repo.get_commit(latest_sha) pulls = commit.get_pulls(state="all")排查API层面问题
可以直接调用GitHub REST API验证是否能返回PR:GET /repos/{owner}/{repo}/commits/{sha}/pulls?state=all如果API返回空,说明问题出在commit与PR的关联关系上(比如未推送到远程、合并方式导致SHA不匹配);如果API能返回PR,检查PyGithub版本是否过旧,尝试更新到最新版本。
内容的提问来源于stack exchange,提问作者GuyMatz
相关产品推荐
相关产品推荐

