查询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
相关产品推荐
相关产品推荐

