如何列出所有已合并分支?覆盖PR合并的全分支场景
列出所有已合并PR对应的分支(无论目标分支类型)
如果你的代码托管在GitHub上,推荐用**GitHub CLI(gh)**来精准筛选所有已合并PR对应的分支,它能直接关联PR状态和分支信息,完全匹配你「只要发起PR且完成合并就纳入列表」的需求:
方法1:用GitHub CLI(gh)输出已合并PR的分支信息
确保已安装并登录gh(未安装的话用系统包管理器直接安装即可)
执行以下命令,会列出所有已合并PR的源分支、目标分支和PR标题:
gh pr list --state merged --json headRefName,baseRefName,title --limit 1000参数说明:
--state merged:仅筛选已合并的PR--json headRefName,baseRefName,title:指定输出字段(源分支名、目标分支名、PR标题)--limit 1000:设置最大返回数量,避免因PR过多遗漏,可根据实际情况调整
想要更易读的格式化输出,可以结合
jq工具:gh pr list --state merged --json headRefName,baseRefName,title --limit 1000 | jq '.[] | "- 源分支: \(.headRefName) | 目标分支: \(.baseRefName) | PR标题: \(.title)"'
方法2:纯Git命令(适合无GitHub CLI的场景)
Git本身没有直接关联PR的元数据,只能找出已被合并到任意分支的本地/远程分支,无法精准对应PR,但可以满足「列出已合并分支」的需求:
- 列出所有已被合并到当前分支的本地分支:
git branch --merged - 列出所有已被合并到指定分支(比如
feature/login)的本地分支:git branch --merged feature/login - 列出所有已被合并的远程分支:
git branch -r --merged
如果要找出所有被任何分支合并过的本地分支,可用遍历脚本:
git for-each-ref refs/heads --format='%(refname:short)' | while read branch; do merged_branches=$(git branch --merged "$branch" | grep -v "$branch") if [ -n "$merged_branches" ]; then echo "分支 $branch 包含以下已合并分支:" echo "$merged_branches" fi done
注意:纯Git命令的结果基于分支合并提交记录,可能包含未发起PR但直接合并的分支;如果只需要有PR记录的合并分支,优先用方法1。
内容的提问来源于stack exchange,提问作者Raghvendra
相关产品推荐
相关产品推荐

