我想知道是否有办法只能从git repo访问子模块目录,而无需完全克隆git repo,甚至使用git init
,如果可能的话。我只需要子模块。
例如;
我只想从这个包含一组编解码器的git repo git://git.linphone.org/linphone-android.git
获取子模块。
如果有人可以帮我解决这个问题,我将不胜感激,谢谢。
答案 0 :(得分:2)
基本上,是的。
正如CoryKramer在您的问题评论中指出的那样,您可以从Spring Boot reference documentation on the order of loading for external configuration获取当前活动子模块的列表。
由于您直接从github获取该文件(使用the .gitmodules file),您可以轻松地将其输入到一个脚本中,以检查单个模块:
curl https://raw.githubusercontent.com/BelledonneCommunications/linphone-android/master/.gitmodules |
awk '$1 == "url" {print $3}' |
xargs -n1 git clone
如果不克隆父存储库,您将无法确定每个子模块中使用的特定提交,但如果您需要的只是每个项目的HEAD,则应该全部设置。
此解决方案显然仅对以这种方式托管的存储库有效,您可以在不克隆整个存储库的情况下访问单个文件。因此,它适用于github托管的存储库,但它不是一般的“git”解决方案。
答案 1 :(得分:0)
基本上没有。
当你得到一个git存储库时,你会得到它。 原因是git没有看到单个文件或文件夹,它会看到整个上下文。
但您可以选择将“模块”作为独立的git存储库。然后,您可以只克隆该特定模块的存储库。并使用git submodule
管理这些子模块。
很多年前,当Linus先生在谷歌谈论Git时,他回答了这个问题,从这个链接开始,从43分11秒开始:https://www.youtube.com/watch?v=4XpnKHJAok8
答案 2 :(得分:0)
您可以使用git sub-module update --remote
或git sub-module update --remote --merge
合并所有子模块。
Foreach命令将在每个子模块git submodule foreach 'git stash'
这两个都将更新所有子模块。我认为只更新一个模块的最佳方法是删除它重新添加该特定模块
$ git rm -r YourLibrary
$ git submodule add https://github.com/username/YourLibrary