【发布时间】:2017-05-03 22:34:06
【问题描述】:
我正在一个只读文件系统中使用 git 管道和镜像(因此是裸露的)存储库。
我可以看到带有git ls-tree 的子模块的存在。我可以推断出它们的名称/路径和 SHA1,但我找不到获取子模块远程的方法。
信息在某处;如果我克隆回购,git submodule init 成功。 (克隆对于正常使用来说太昂贵了,特别是对于非常大的存储库。)我怎样才能直接访问子模块远程?
【问题讨论】:
-
它在
.gitmodules具有配置文件格式的文件中,因此如果您提取文件,您可以在其上使用git config -f(又名--file)。不过,这本身有点棘手。git show <rev>:.gitmodules或git cat-file -p <rev>:.gitmodules将获取内容。如果你有/dev/stdin,你可以通过管道将它们发送到git config -f /dev/stdin。 -
@torek 你会把它变成一个答案,这样我就可以接受了吗?这正是我想要的。
-
我可以,但我不确定你需要从
.gitmodules文件中提取什么(即,你需要什么git config -f ... --get。 -
没关系。关键是知道数据隐藏在哪里。弄清楚格式很容易。 :) 看起来您搜索
submodule.<name>.path=<path>其中是您要匹配的路径。这告诉你。然后查找 submodule.<name>.url=<url>,一切就绪。
标签: git git-submodules git-plumbing