问题描述
我有一个庞大的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 ...”显示分支的原始列表