使用 Github API 是不是可以确定一个分支是不是在默认分支之前?

Posted

技术标签:

【中文标题】使用 Github API 是不是可以确定一个分支是不是在默认分支之前?【英文标题】:Using the Github API is it possible to determine if a branch is ahead of the default branch?使用 Github API 是否可以确定一个分支是否在默认分支之前? 【发布时间】:2019-01-05 06:30:06 【问题描述】:

使用 Github API(没有本地 git 命令),是否可以比较一个分支以查看它是否在默认分支之前有任何更改?

我正在构建一个审计工具,并且想确定哪些分支是要关闭的候选分支,因为它们的所有更改都存在于默认分支中。

我想要驱动分支页面上的图表的相同信息: (见https://github.com/octokit/octokit.rb/branches)

是否可以完全使用 Github API 获取这些信息?

【问题讨论】:

【参考方案1】:

你可以:

使用https://api.github.com/repos/octokit/octokit.rb获取默认分支

使用compare two commits API 将指定分支与默认分支进行比较,并提取ahead_bybehind_by 字段。

在这种情况下,它将是: https://api.github.com/repos/octokit/octokit.rb/compare/kytrinyx/generator/spike...master

使用bash、curl 和jq 的示例:

branch=kytrinyx/generator/spike
default_branch=$(curl -s "https://api.github.com/repos/octokit/octokit.rb" | jq -r '.default_branch')
curl -s "https://api.github.com/repos/octokit/octokit.rb/compare/$branch...$default_branch" | \
     jq -r '.ahead_by, .behind_by'

【讨论】:

以上是关于使用 Github API 是不是可以确定一个分支是不是在默认分支之前?的主要内容,如果未能解决你的问题,请参考以下文章

VSTS REST API - GIT - 分支是不是存在?

我们是不是必须在 VS Code 和 GitHub 中分别合并分支?

如何在 GitHub Action 上参数化机密

本地 GIT 分支和远程 GITHUB 分支是不是需要相同才能推送代码? [复制]

github graphql api 存储库中的默认分支

使用 heroku CLI 部署 GitHub 分支