列出回购项目的所有git子项目中的所有分支

问题描述

我有一个庞大的repo项目,其中包含许多git子项目。 (它是AOSP) 我想在回购项目中到处找到特定的分支。 是否已经有命令列出所有git子项目中的所有(或匹配的)分支,还是需要一些脚本? git子模块支持这种命令吗?

预期输出示例:

sub/project1:main
sub/project1:v1
sub/project2:main
sub/project2:v1
...

解决方法

有git子模块的foreach命令。参见submodule documentation

您可以使用git submodule foreach 'git branch'列出所有分支,以获取每个子模块的所有本地分支的列表。

,

解决方案:

repo forall -p -c git for-each-ref --format="%(refname:short)" refs/heads/*

“ repo forall -p”的一项不错的功能,它仅在子命令具有输出时才打印子项目路径。因此,不会打印回购常见的无分支路径。仅打印具有本地分支的路径!

“ git for-each-ref ...”显示分支的原始列表