下载tar包的git子模块

时间:2013-07-25 02:13:39

标签: git github git-submodules

是否可以下载仅包含工作目录的存储库的子模块?

如果我从GitHub下载存储库的tarball,这相当于没有.git文件夹的浅层克隆,是否可以将子模块“下载”到工作目录中?

我尝试git init && git submodule update --init,但这既没有初始化也没有更新子模块。 .gitmodules文件位于当前目录中。

更新:关于这个问题的更多背景知识:我们想在Travis CI使用tarball检查存储库,但是有些人使用git子模块。因此,“不要使用Git子模块”不是一个好的答案,但答案实际上也不一定是可维护的。我只想要一个已经检出代码并且初始化了子模块的文件夹,不需要任何允许我在以后删除更多更改的内容。

1 个答案:

答案 0 :(得分:2)

将wget / tar方法与git init结合起来无法帮助您初始化子模块:

git init后,所有内容都未跟踪。

您需要在之前添加并提交所有内容

git submodule update --init --recursive --force

那个git submodule命令将“工作”,但只创建空目录 这是因为tar文件不包含由special entries (160000)创建的 git submodule add

您需要重新声明这些子模块:

C:\prog\git\ReactiveCocoa-2.0-development>git submodule add --name xcconfigs https://github.com/jspahrsummers/xcconfigs.git external\xcconfigs
Cloning into 'external\xcconfigs'...
remote: Counting objects: 312, done.
remote: Compressing objects: 100% (229/229), done.
Receal 312 (delta 87), reused 306 (delta 82)
Receiving objects: 100% (312/312), 64.51 KiB | 0 bytes/s, done.
Resolving deltas: 100% (87/87), done.