如何通过GitLab API获取两分支差异提交ID、说明及curl请求语法
GitLab 查询两分支差异提交的 curl 请求用法
前置准备
你需要先准备3个必填信息:
- GitLab 实例访问地址(例如
https://gitlab.mycompany.com) - 目标项目的 ID(可在项目主页「设置」页查看,也可使用转义后的项目路径,例如
group%2Fproject) - 拥有
read_repository权限的个人访问令牌(PAT)
基础 curl 请求写法
如果你需要查询 feature 分支存在、但 master 分支遗漏的提交,请求写法如下:
curl --header "PRIVATE-TOKEN: 替换为你的个人访问令牌" "https://替换为你的GitLab地址/api/v4/projects/替换为项目ID/repository/compare?from=master&to=替换为目标feature分支名&straight=true"
如果需要查询 master 有、feature 没有的提交,交换
from和to参数的分支名即可。
返回结果中 commits 数组即为两个分支的差异提交列表,每个元素的 id 是提交ID,title、message 为对应的提交说明。
如果需要直接过滤出仅提交ID和提交说明的结果,可以结合 jq 工具处理:
curl --header "PRIVATE-TOKEN: 替换为你的个人访问令牌" "https://替换为你的GitLab地址/api/v4/projects/替换为项目ID/repository/compare?from=master&to=替换为目标feature分支名&straight=true" | jq '.commits[] | {commit_id: .id, commit_msg: .title}'
语法规则说明
straight=true是必加参数:不加的话GitLab会默认走三方合并逻辑,仅返回两个分支最新HEAD的差异内容,不会返回全量差异提交- 项目路径如果包含
/,必须转义为%2F,否则会触发404错误 - 分支名如果有特殊字符,需要做URL转义
- 个人访问令牌必须放在请求头的
PRIVATE-TOKEN字段,禁止放在URL参数中避免日志泄露 - 该接口默认最多返回100条提交,如果差异提交数超过100,需要追加
per_page和page参数分页查询
内容的提问来源于stack exchange,提问作者Muthuvel Narayanan
相关产品推荐
相关产品推荐

