如何通过Git命令查询BitBucket Pull Request的目标合并分支?
查询BitBucket私有仓库指定PR的合并目标分支(Git v1.18)
方法一:通过合并提交溯源(适用于已合并的PR)
- 拉取PR远程引用(首次执行即可):
默认Git不会同步BitBucket的PR分支引用,先配置并拉取:
git config --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*" git fetch origin
- 获取PR的HEAD提交哈希:
替换<PR_NUMBER>为实际PR编号:
PR_HEAD=$(git rev-parse origin/pr/<PR_NUMBER>)
- 定位合并提交:
- 若合并提交信息包含PR编号(BitBucket默认生成的合并信息通常包含):
MERGE_COMMIT=$(git log --merges --grep="Merge pull request #<PR_NUMBER>" --pretty=format:"%h" | head -n1) - 若提交信息无PR编号,查找以PR提交为第二父节点的合并提交:
MERGE_COMMIT=$(git log --merges --all --pretty=format:"%h %p" | awk -v pr="$PR_HEAD" '{if ($3 == pr) print $1}')
- 获取目标分支名:
合并提交的第一个父节点属于目标分支,通过name-rev解析分支名:
TARGET_PARENT=$(git show $MERGE_COMMIT --pretty=format:"%P" | awk '{print $1}') TARGET_BRANCH=$(git name-rev --name-only $TARGET_PARENT) echo "PR #<PR_NUMBER> 合并目标分支:$TARGET_BRANCH"
方法二:通过分支包含关系判断
若PR已合并,直接查找包含PR HEAD提交的远程分支:
git branch -r --contains $PR_HEAD
输出结果中排除origin/pr/<PR_NUMBER>,剩余分支里的基础稳定分支(如master)即为合并目标。注意此方法会列出所有衍生分支,需结合分支历史筛选。
限制说明
如果PR尚未合并,目标分支的元数据仅存储在BitBucket服务器端,本地Git无法通过命令直接获取,这种情况无法绕开API查询。
内容的提问来源于stack exchange,提问作者Rajesh
相关产品推荐
相关产品推荐

