我有一个Git存储库,其中有几个子模块。如何在git子模块init运行后列出所有子模块的名称?
git子模块foreach命令可以回显子模块的名称,但这只有在它们被签出后才有效,而在init步骤之后没有发生。在签出之前,链中还有更多的步骤需要执行,我不希望将子模块的名称硬连接到脚本中。
那么是否存在一个Git命令来获取所有当前已注册但尚未签出的子模块的名称?
我有一个Git存储库,其中有几个子模块。如何在git子模块init运行后列出所有子模块的名称?
git子模块foreach命令可以回显子模块的名称,但这只有在它们被签出后才有效,而在init步骤之后没有发生。在签出之前,链中还有更多的步骤需要执行,我不希望将子模块的名称硬连接到脚本中。
那么是否存在一个Git命令来获取所有当前已注册但尚未签出的子模块的名称?
当前回答
获取路径
grep url .gitmodules | sed 's/.*= //'
在回购中得到名字
grep path .gitmodules | sed 's/.*= //'
其他回答
Use:
$ git submodule
它将列出指定Git存储库中的所有子模块。
使用内置git函数显示每个子模块的所有信息:
git submodule foreach -q git config -l
或者只是url:
git submodule foreach -q git config remote.origin.url
从这里偷来的。
我用的是这个:
git submodule status | cut -d' ' -f3-4
输出(路径+版本):
tools/deploy_utils (0.2.4)
你可以使用:
git submodule | awk '{ print $2 }'
下面的命令将列出子模块:
git submodule--helper list
输出如下所示:
<mode> <sha1> <stage> <location>
注意:需要Git 2.7.0或以上版本。