是否可以下载只有工作目录的存储库的子模块?
如果我从github下载存储库的tarball,相当于一个没有.git
文件夹的浅层克隆,那么是否可以将子模块“下载”到工作目录中?
我尝试了git init && git submodule update --init
,但这既不会初始化也不会更新子模块。.gitmodules
文件在当前目录中。
更新:关于这个问题的更多背景知识:我们想使用tarballs在Travis CI上签出存储库,但是有几个人使用git子模块。”因此,“不要使用git子模块”不是一个好的答案,但答案也不一定是一些可维护的东西。我只想要一个已经签出代码并初始化了子模块的文件夹,不需要任何允许我在以后拉下更多更改的东西。
最佳答案
将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.