列出 repo 项目的所有 git 个子项目中的所有分支

List all branches in all git subproject of repo project

我有一个包含许多 git 子项目的大型回购项目。 (是AOSP) 我想在 repo 项目中到处找到特定的分支。 是否已经有一个命令来列出所有 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 ..." 打印分支的原始列表