我有一个Git存储库,其中有几个子模块。如何在git子模块init运行后列出所有子模块的名称?

git子模块foreach命令可以回显子模块的名称,但这只有在它们被签出后才有效,而在init步骤之后没有发生。在签出之前,链中还有更多的步骤需要执行,我不希望将子模块的名称硬连接到脚本中。

那么是否存在一个Git命令来获取所有当前已注册但尚未签出的子模块的名称?


当前回答

只是一个简单的子模块列表:

git submodule--helper list | cut -d$'\t' -f 2

其他回答

如果你想要显示嵌套的子模块,你可以使用git submodule status或者git submodule status——recursive。

从Git文档中:

显示子模块的状态。的SHA-1 的子模块的当前签出提交 子模块路径和git的输出为SHA-1描述。每一个 如果子模块未初始化,SHA-1将以-作为前缀,+ 如果当前检出的子模块提交不匹配SHA-1 在包含该子模块的存储库的索引中找到U 存在合并冲突。

为了只返回已注册的子模块的名称,你可以使用这个命令:

grep path .gitmodules | sed 's/.*= //'

可以把它看成是git子模块list,它并不存在。

按名称列出所有子模块:

Git子模块——quiet foreach——递归echo $name

Use:

$ git submodule

它将列出指定Git存储库中的所有子模块。

只是一个简单的子模块列表:

git submodule--helper list | cut -d$'\t' -f 2