如何不推送远程分支,通过commit hash调用Bitbucket API创建PR
核心前提
Bitbucket 创建PR的底层逻辑要求源提交必须已经存在于远程仓库中,且fromRef必须指向一个远程可识别的引用ID,接口本身不支持直接上传本地提交内容,因此你需要先将本地提交推送到远程的非分支引用路径,该路径不会被识别为常规远程分支,不会出现在公共分支列表中,完全符合不允许创建新远程分支的要求。
调整后的操作流程
- 获取本地最新提交的完整哈希值:
COMMIT_HASH=$(git rev-parse HEAD)
- 直接推送单个提交到远程临时引用路径,无需创建对应远程分支:
git push origin ${COMMIT_HASH}:refs/temp-pr/${COMMIT_HASH}
- 调整接口请求的formData参数,将
fromRef.id替换为上述临时引用路径即可:
{ "title": "New PR for $somebranch", "fromRef": { "id": "refs/temp-pr/${COMMIT_HASH}" }, "toRef": { "id": "refs/heads/$somebranch" } }
- 调用接口创建PR的curl命令示例:
curl -v ${pullRequestRestUrl} -u user:pass -X POST --header 'Content-Type: application/json' --data '{"title": "New PR for '"$somebranch"'","fromRef": {"id": "refs/temp-pr/'"$COMMIT_HASH"'"}, "toRef": {"id": "refs/heads/'"$somebranch"'"}}'
后续清理
PR合并完成后可手动删除临时引用,避免冗余:
git push origin --delete refs/temp-pr/${COMMIT_HASH}
内容的提问来源于stack exchange,提问作者outofbounds
相关产品推荐
相关产品推荐

