You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询Project P下各独立子仓库(A-E)的活跃Git分支

批量查询一级子目录的Git活跃分支

Got it, let's tackle this. You need to pull active Git branch info for each of the first-level subdirectories (A, B, C, D, E) under your project P—each being an independent repo with multiple branches (merged and unmerged). Below are practical, easy-to-use solutions tailored for different needs:

1. 列出每个子目录的所有本地活跃分支

这个bash脚本会遍历项目P下的所有一级文件夹,检查是否为Git仓库,然后输出所有本地分支(包含已合并和未合并的):

#!/bin/bash
# 替换为你的项目P根目录实际路径
cd /path/to/your/project/P || exit

# 遍历所有一级子目录
for dir in */; do
    # 去掉目录末尾的斜杠,得到整洁的目录名
    dir_name=${dir%/}
    echo "=== $dir_name 的本地活跃分支 ==="
    # 检查该目录是否为Git仓库
    if [ -d "$dir/.git" ]; then
        # 进入仓库,列出所有本地分支(不带*标记的简洁格式)
        cd "$dir" && git branch --format="%(refname:short)" && cd ..
    else
        echo "⚠️ $dir_name 不是Git仓库,跳过"
    fi
    echo "" # 空行分隔,提升可读性
done

使用方法:

  • 将脚本保存为list_repo_branches.sh
  • 赋予执行权限:chmod +x list_repo_branches.sh
  • 运行脚本:./list_repo_branches.sh

2. 区分已合并/未合并到当前分支的活跃分支

如果你需要明确哪些分支已经合并到当前检出的分支,哪些还未合并,可以用这个增强版脚本:

#!/bin/bash
cd /path/to/your/project/P || exit

for dir in */; do
    dir_name=${dir%/}
    echo "=== $dir_name 的分支状态 ==="
    if [ -d "$dir/.git" ]; then
        cd "$dir"
        # 获取当前检出的分支名
        current_branch=$(git rev-parse --abbrev-ref HEAD)
        echo "当前检出分支: $current_branch"
        echo ""
        echo "✅ 已合并到 $current_branch 的分支:"
        git branch --merged | grep -v "\*" | grep -v "$current_branch" || echo "无"
        echo ""
        echo "⚠️ 未合并到 $current_branch 的分支:"
        git branch --no-merged | grep -v "\*" || echo "无"
        cd ..
    else
        echo "⚠️ $dir_name 不是Git仓库,跳过"
    fi
    echo ""
done

3. 包含远程追踪分支的详细信息

如果还想查看本地分支与远程仓库的关联状态(比如上游分支名称、同步情况),可以用git branch -vv获取更完整的上下文:

#!/bin/bash
cd /path/to/your/project/P || exit

for dir in */; do
    dir_name=${dir%/}
    echo "=== $dir_name 的本地分支(含远程追踪) ==="
    if [ -d "$dir/.git" ]; then
        cd "$dir" && git branch -vv && cd ..
    else
        echo "⚠️ $dir_name 不是Git仓库,跳过"
    fi
    echo ""
done

小提示:

  • 如果你用Windows系统,可以通过Git Bash(Git for Windows自带)运行这些脚本
  • 若只想针对特定子目录查询(比如仅A、B、C),把for dir in */;替换为for dir in A/ B/ C/;即可

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:12:39