我有一个包含多个子模块的工作git存储库(通过克隆不同的存储库获得)。
现在,我希望通过推送或克隆将整个存储库(包含所有子模块)复制到另一台计算机上的裸git存储库。我很好地丢失了子模块的历史(我只是想保留它们的内容)。
这可能吗?在我的尝试中,在克隆的存储库中子模块目录为空。
P.S。我知道这不是正确的工作流程(请参阅creating a public repo with submodules),但是不可能更新原始子模块。
答案 0 :(得分:21)
您可以使用recursive
克隆包含所有子模块的git仓库,如下所示:
git clone --recursive your-repo-url
另一方面,如果你已经克隆了,你可以使用:
git submodule init
git submodule update
您的子模块中没有任何历史记录
答案 1 :(得分:3)
在克隆的存储库中,子模块目录为空。
如果,通过" cloned repo",你指的是裸仓库,这是正常的:一个裸仓库总是空的。
如果你暗指裸仓的克隆,你需要添加:
git submodule update --init --recursive
这样,您将看到这些子模块的内容。
请记住,子模块是:
.gitmodules
档案中的声明所以你需要做的就是克隆那个仓库(即使是--recursive
选项),子模块也会跟进。