如何通过Gitlab REST API及命令行创建分叉仓库至主仓库的合并请求
命令行创建分叉仓库到主仓库的Gitlab合并请求
你可以通过两种方式在命令行完成这个操作,Gitlab的Merge Request API实际上是支持source_project_id参数的,可能是你之前查看的文档版本存在偏差:
方法一:使用curl调用Gitlab REST API
提前准备好以下信息:
- 主仓库的ID(
target_project_id) - 分叉仓库的ID(
source_project_id) - 分叉仓库的源分支名(不能是受保护的master,需从你创建的开发分支发起)
- 主仓库的目标分支名(同样不能是受保护的master,需合并到开发分支后再走官方流程合并到master)
- 拥有API权限的Gitlab访问令牌
- 你的Gitlab实例域名(如
gitlab.com或私有部署域名)
执行以下命令(替换所有占位符内容):
curl --request POST \ --url "https://你的Gitlab域名/api/v4/projects/主仓库ID/merge_requests" \ --header "PRIVATE-TOKEN: 你的Gitlab访问令牌" \ --header "Content-Type: application/json" \ --data '{ "source_project_id": 分叉仓库ID, "source_branch": "你的开发分支名", "target_branch": "主仓库开发分支名", "title": "合并分叉仓库的开发分支变更", "description": "描述本次合并的内容、改动点等" }'
方法二:使用Gitlab官方CLI工具glab
glab是Gitlab官方提供的命令行工具,操作更简洁:
- 先安装glab并完成配置(关联你的Gitlab实例,配置访问令牌)
- 执行以下命令(支持用项目路径代替ID,比如
your-username/main-repo):
glab mr create \ --target-project 主仓库ID或路径 \ --source-project 分叉仓库ID或路径 \ --source-branch 你的开发分支名 \ --target-branch 主仓库开发分支名 \ --title "合并分叉仓库的开发分支变更" \ --description "描述本次合并的内容、改动点等"
注意事项
- 确保你的访问令牌拥有足够权限:至少对主仓库有
create_merge_requests权限,对分叉仓库有读取权限 - 因为master分支受保护,必须从双方的非master开发分支发起合并请求,后续再通过主仓库的保护流程合并到master
内容的提问来源于stack exchange,提问作者Gursel Koca
相关产品推荐
相关产品推荐

