为tarball下载git子模块

9

是否可以通过仅使用工作目录下载存储库的子模块?

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

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

更新:关于问题的更多背景:我们想在Travis CI上使用tarballs来检出存储库,但是有几个人使用git子模块。因此,“不要使用Git子模块”不是一个好答案,但答案也不一定要是可维护的。 我只想要一个具有已检出代码和已初始化子模块的文件夹,没有必要允许我稍后拉取更多更改。


为什么 git submodule update --init --recursive --force 不起作用?它应该加载这些子模块(但包括它们的完整历史记录)。请注意,git1.8.4将添加一个--depth选项以进行浅层次子模块克隆 - VonC
@VonC 如果我早知道就好了。那个命令对我来说根本没有任何作用。没有错误,但是它会“立即”返回而没有任何输出。 - sarahhodne
你的.gitmodules文件内容是什么?你使用的是哪个版本的git? - VonC
1
这里有一个示例,包括下载tarball和所有命令:https://gist.github.com/henrikhodne/49bb2c11d2fe25b31089 - sarahhodne
1个回答

2
结合使用wget/tar和git init的方法无法帮助您初始化子模块:
在git init之后,所有内容都未被跟踪。
在此之前,您需要添加和提交所有内容。
git submodule update --init --recursive --force

那个git submodule命令会“工作”,但只会创建空目录。
这是因为tar文件没有包含由git submodule add创建的特殊条目(160000)
你需要重新声明这些子模块:
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.

这对我仍然无效。我正在使用与上面评论中的要点相同的命令,之后立即使用 git add -A . && git commit -m "commit everything" 来执行 git init - sarahhodne
谢谢,看起来我们需要解析.gitmodules文件,然后重新添加所有内容。我希望有一些更自动化的东西,但我想这样也可以。 - sarahhodne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接