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

如何通过GitHub API获取分支拆分的初始Commit SHA?

如何通过GitHub API获取分支拆分的初始Commit SHA
  • 可以通过GitHub API的Compare two commits接口实现类似git merge-base的功能,找到分支与主分支的最近共同祖先提交(即你图中标记为1的提交)。
  • 具体操作:
    1. 调用接口时,传入仓库信息、主分支(如main/master)和目标分支的引用,接口路径为GET /repos/{owner}/{repo}/compare/{base}...{head}。
    2. 返回结果里的merge_base_commit字段就是两个分支的共同祖先,其sha属性即为你需要的初始提交SHA。
  • 若不确定目标分支从哪个主分支拆分,可先调用GET /repos/{owner}/{repo}接口获取仓库的默认分支(default_branch字段),再用它作为base参数进行比较。
  • 在GitHub CI的JavaScript Action中,可借助@actions/github包调用API,示例代码如下:
const github = require('@actions/github');
const octokit = github.getOctokit(process.env.GITHUB_TOKEN);

async function getMergeBaseSha() {
  const repoInfo = github.context.repo;
  const targetBranch = github.context.ref.replace('refs/heads/', '');
  // 获取仓库默认分支
  const { data: repoData } = await octokit.rest.repos.get({
    owner: repoInfo.owner,
    repo: repoInfo.repo
  });
  const defaultBranch = repoData.default_branch;
  // 比较分支获取共同祖先
  const { data: compareData } = await octokit.rest.repos.compareCommits({
    owner: repoInfo.owner,
    repo: repoInfo.repo,
    base: defaultBranch,
    head: targetBranch
  });
  return compareData.merge_base_commit.sha;
}

// 执行并输出结果
getMergeBaseSha().then(sha => {
  console.log('分支拆分的初始Commit SHA:', sha);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:47:06