You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取GitHub上已合并分支的列表及分支创建者信息?

获取已合并Git分支及创建者的实用方案

嘿,我之前也碰到过团队分支堆积需要统计的情况,给你几个直接能用的Git命令组合,应该能解决你的问题:

一、统计本地已合并分支及创建者

如果你的本地仓库已经同步了所有分支,可以用以下命令:

1. 针对单个目标分支(比如develop)

先列出所有已合并到develop且排除四个主流分支的功能分支,再逐个获取创建者:

for branch in $(git branch --merged develop | grep -v "^\*" | grep -v "develop\|staging\|demo\|master"); do
  # 取分支最早提交的作者(即分支创建者)
  creator=$(git log --pretty=format:"%an" $branch | tail -1)
  echo "分支名称: $branch, 创建者: $creator"
done

2. 批量处理四个主流分支

一次性统计所有合并到developstagingdemomaster的分支:

# 定义目标分支数组
target_branches=("develop" "staging" "demo" "master")

for target in "${target_branches[@]}"; do
  echo -e "\n=== 已合并到${target}的分支列表 ==="
  # 过滤目标分支和当前分支,只保留功能分支
  for branch in $(git branch --merged $target | grep -v "^\*" | grep -v "${target_branches[*]}"); do
    creator=$(git log --pretty=format:"%an" $branch | tail -1)
    echo "分支: $branch, 创建者: $creator"
  done
done

二、统计远程已合并分支及创建者

如果分支主要在远程仓库(比如origin),可以调整命令适配远程分支:

target_branches=("develop" "staging" "demo" "master")

for target in "${target_branches[@]}"; do
  echo -e "\n=== 已合并到origin/${target}的远程分支 ==="
  # 列出远程已合并分支并去掉origin/前缀
  for remote_branch in $(git branch -r --merged origin/$target | sed 's/origin\///' | grep -v "${target_branches[*]}"); do
    creator=$(git log --pretty=format:"%an" origin/$remote_branch | tail -1)
    echo "远程分支: $remote_branch, 创建者: $creator"
  done
done

三、输出到文件方便统计

如果需要把结果保存成文件做后续分析,只需要在命令末尾加上输出重定向:

# 以本地分支统计为例
target_branches=("develop" "staging" "demo" "master")

for target in "${target_branches[@]}"; do
  echo -e "\n=== 已合并到${target}的分支列表 ===" >> merged_branches_report.txt
  for branch in $(git branch --merged $target | grep -v "^\*" | grep -v "${target_branches[*]}"); do
    creator=$(git log --pretty=format:"%an" $branch | tail -1)
    echo "分支: $branch, 创建者: $creator" >> merged_branches_report.txt
  done
done

小提示

  • 如果分支名称包含特殊字符(比如空格),可以把循环改成用while read来处理,避免出错。
  • git log --pretty=format:"%an"会显示作者名称,如果你需要邮箱可以改成%ae

内容的提问来源于stack exchange,提问作者SHIVAM JINDAL

火山引擎 最新活动