【问题标题】:Cloning a git repo with all submodules克隆一个包含所有子模块的 git repo
【发布时间】:2014-10-01 17:46:26
【问题描述】:
我有一个工作 git 存储库,其中包含几个子模块(通过克隆不同的存储库获得)。
现在,我想通过推送或克隆将整个存储库(包括所有子模块)复制到另一台机器上的裸 git 存储库。我很好地失去了子模块的历史(我只是对保留它们的内容感兴趣)。
这可能吗?在我的尝试中,在克隆的存储库中,子模块目录是空的。
附:我知道这不是正确的工作流程(请参阅creating a public repo with submodules),但是不可能更新原始子模块。
【问题讨论】:
标签:
git
git-submodules
git-push
git-clone
【解决方案1】:
您可以使用recursive 克隆所有子模块的 git 存储库,如下所示:
git clone --recursive your-repo-url
另一方面,如果您已经克隆,则可以使用:
git submodule init
git submodule update
您不会丢失子模块中的任何历史记录
【解决方案2】:
在克隆的存储库中,子模块目录为空。
如果“克隆仓库”指的是裸仓库,这是正常的:裸仓库总是空的。
如果您指的是裸仓库的克隆,则需要添加:
git submodule update --init --recursive
这样,您将看到这些子模块的内容。
记住,子模块是:
因此,您需要做的就是克隆该 repo(即使使用 --recursive 选项),子模块也会随之而来。