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

如何通过GitLab API获取master分支的原生提交?

获取GitLab master分支原生提交的解决方案

问题描述

我目前使用以下GitLab API获取master分支的所有提交:

https://gitlab.com/api/v4/projects/${projectID}/repository/commits?ref=master&per_page=50&page=1

请求能正常返回结果,但包含了并非起源于master分支、后续合并进来的提交。在GitLab的图形视图中,红色节点是master分支的原生提交,绿色节点是其他分支合并过来的,我只需要红色节点对应的提交。

尝试过添加?ref=master过滤,但仍会显示合并分支的父提交(这是预期行为),现寻求以下任一解决方案:

  • 通过GitLab API直接获取符合要求的提交列表
  • 通过GitLab API对repository/commits请求结果过滤,仅保留起源于master分支的提交

解决方案1:直接调用API时指定筛选参数

GitLab API的repository/commits接口支持first_parent参数,将其设为true后,API会只返回当前分支的第一父提交链中的内容,也就是你需要的master分支原生提交(排除合并自其他分支的提交)。

修改后的请求地址:

https://gitlab.com/api/v4/projects/${projectID}/repository/commits?ref=master&per_page=50&page=1&first_parent=true

这个参数会让API严格沿着master分支的第一父节点返回提交,完全匹配你要的红色节点提交。

解决方案2:对返回结果进行二次过滤

如果你的GitLab版本不支持first_parent参数,可以通过二次过滤实现:

  1. 先调用原API获取master分支的所有提交列表:
https://gitlab.com/api/v4/projects/${projectID}/repository/commits?ref=master&per_page=50&page=1
  1. 对每个提交,调用https://gitlab.com/api/v4/projects/${projectID}/repository/commits/${commitId}/refs接口,检查返回结果中是否包含refs/heads/master且类型为branch的记录。
  2. 仅保留满足上述条件的提交,这些就是master分支的原生提交。

注意:这种方式需要多次调用API,效率较低,优先推荐第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:25:22