仅从git repo获取子模块

仅从git repo获取子模块,git,git-submodules,Git,Git Submodules,我想知道是否有一种方法可以只从git repo访问子模块目录,而不完全克隆git repo,甚至不使用git init,如果可能的话。我只需要子模块 比如, 我只想从这个git repogit://git.linphone.org/linphone-android.git,其中包含一组编解码器 如果有人能帮我回答这个问题,我将不胜感激,谢谢。基本上没有 当你得到一个git存储库时,你就得到了一切。 原因是git看不到单个文件或文件夹,它看到的是整个上下文 但是您可以选择将“模块”作为独立的git

我想知道是否有一种方法可以只从git repo访问子模块目录,而不完全克隆git repo,甚至不使用
git init
,如果可能的话。我只需要子模块

比如,

我只想从这个git repo
git://git.linphone.org/linphone-android.git
,其中包含一组编解码器

如果有人能帮我回答这个问题,我将不胜感激,谢谢。

基本上没有

当你得到一个git存储库时,你就得到了一切。 原因是git看不到单个文件或文件夹,它看到的是整个上下文

但是您可以选择将“模块”作为独立的git存储库。然后,您可以只克隆该特定模块的存储库。并使用
git submodule
管理这些子模块

许多年前,当Linus先生在谷歌发表关于Git的演讲时,他回答了这个问题,从43分11秒的链接开始:

基本上,没有

当你得到一个git存储库时,你就得到了一切。 原因是git看不到单个文件或文件夹,它看到的是整个上下文

但是您可以选择将“模块”作为独立的git存储库。然后,您可以只克隆该特定模块的存储库。并使用
git submodule
管理这些子模块


许多年前,当Linus先生在Google演讲Git时,他回答了这个问题,从43分11秒开始,在这个链接中:

你可以使用
Git子模块更新--remote
Git子模块更新--remote--merge
来合并所有子模块

Foreach命令将在每个子模块上执行任务
git子模块Foreach'git stash'

这两项都将更新所有子模块。我认为只更新一个模块的最好方法是删除它,然后重新添加该特定模块


$git rm-r您的图书馆
$git子模块添加https://github.com/username/YourLibrary


您可以使用
git子模块更新--remote
git子模块更新--remote--merge
合并所有子模块

Foreach命令将在每个子模块上执行任务
git子模块Foreach'git stash'

这两项都将更新所有子模块。我认为只更新一个模块的最好方法是删除它,然后重新添加该特定模块


$git rm-r您的图书馆
$git子模块添加https://github.com/username/YourLibrary

基本上,是的

正如CoryKramer在对您的问题的评论中指出的,您可以从中获得当前活动子模块的列表

由于您直接从github(使用)获取该文件,因此可以轻松地将其输入到脚本中,该脚本将签出各个模块:

curl https://raw.githubusercontent.com/BelledonneCommunications/linphone-android/master/.gitmodules |
awk '$1 == "url" {print $3}' |
xargs -n1 git clone
如果不克隆父存储库,您将无法确定在每个子模块中使用的特定提交,但是如果您只需要每个项目的头,那么应该全部设置好

显然,此解决方案仅适用于以这样一种方式托管的存储库,即您可以访问单个文件而无需克隆整个存储库。因此,它对github托管的存储库非常有效,但它不是一个通用的“git”解决方案。

基本上是这样

正如CoryKramer在对您的问题的评论中指出的,您可以从中获得当前活动子模块的列表

由于您直接从github(使用)获取该文件,因此可以轻松地将其输入到脚本中,该脚本将签出各个模块:

curl https://raw.githubusercontent.com/BelledonneCommunications/linphone-android/master/.gitmodules |
awk '$1 == "url" {print $3}' |
xargs -n1 git clone
如果不克隆父存储库,您将无法确定在每个子模块中使用的特定提交,但是如果您只需要每个项目的头,那么应该全部设置好


显然,此解决方案仅适用于以这样一种方式托管的存储库,即您可以访问单个文件而无需克隆整个存储库。因此,它对于github托管的存储库非常有效,但它不是一个通用的“git”解决方案。

子模块本质上只是指向其他一些git repo,您可以看到。有了这个文件,您可以编写一个小的bash脚本,如果需要的话,可以将每个脚本克隆为自己的repo。有了这个文件,您可以编写一个小的bash脚本,如果需要的话,可以将每个脚本克隆为自己的repo?我假设这应该是
git子模块
。这是
git子模块
中的打字错误吗?我假设这应该是
git子模块