如何从CLI为已推送的提交创建合并请求?(命令执行失败求助)
我来帮你搞定这个问题!你遇到的情况很典型——当本地dev分支和远程origin/dev已经完全同步时,git push带merge_request.create这类选项肯定会提示"Everything up-to-date",毕竟没有新内容要推送,自然触发不了合并请求创建流程。
这种时候,你需要用对应Git平台的专用CLI工具来直接创建合并请求,而不是依赖git push的触发机制。下面分主流平台给你具体操作步骤:
GitLab 用户
GitLab官方提供了glab CLI工具,先确保你已经完成安装和登录(执行glab auth login按照提示完成授权即可)。之后直接运行:
glab mr create --source dev --target master
如果需要给合并请求添加标题和描述,直接追加参数:
glab mr create --source dev --target master --title "合并dev分支到master" --description "本次合并包含用户中心模块的功能更新及Bug修复"
如果你的远程仓库别名不是origin,可以用--repo参数指定仓库路径(比如--repo your-username/your-project)。
GitHub 用户
GitHub的官方CLI是gh,同样先完成安装和登录(gh auth login)。GitHub里合并请求叫Pull Request(PR),创建命令如下:
gh pr create --base master --head dev
添加标题和描述的话:
gh pr create --base master --head dev --title "Merge dev into master" --body "1. 新增支付接口;2. 修复了登录页的兼容性问题"
要是想直接在浏览器里编辑PR详情,加上--web参数就能跳转过去。
Bitbucket 用户
Bitbucket的CLI工具是bb,安装并登录后,执行以下命令创建合并请求:
bb pr create --source dev --target master
同样可以通过--title和--description参数补充合并请求的信息。
备选方案:直接调用API
如果你不想安装CLI工具,也可以通过平台的API来创建合并请求。比如GitLab的API调用示例(需要先生成个人访问令牌):
curl --request POST \ --header "PRIVATE-TOKEN: 你的GitLab访问令牌" \ "https://gitlab.example.com/api/v4/projects/你的项目ID/merge_requests" \ --form "source_branch=dev" \ --form "target_branch=master" \ --form "title=合并dev到master分支"
不过这种方式需要手动处理令牌和参数,不如CLI工具便捷,更适合自动化脚本场景。
内容的提问来源于stack exchange,提问作者betontalpfa

