克隆包含所有子模块的git仓库

时间:2014-08-08 09:31:59

标签: git git-submodules git-push git-clone

我有一个包含多个子模块的工作git存储库(通过克隆不同的存储库获得)。

现在,我希望通过推送或克隆将整个存储库(包含所有子模块)复制到另一台计算机上的裸git存储库。我很好地丢失了子模块的历史(我只是想保留它们的内容)。

这可能吗?在我的尝试中,在克隆的存储库中子模块目录为空。

P.S。我知道这不是正确的工作流程(请参阅creating a public repo with submodules),但是不可能更新原始子模块。

2 个答案:

答案 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

这样,您将看到这些子模块的内容。


请记住,子模块是:

所以你需要做的就是克隆那个仓库(即使是--recursive选项),子模块也会跟进。