【问题标题】:Git submodules in github repogithub repo 中的 Git 子模块
【发布时间】:2015-04-09 07:09:33
【问题描述】:
在我的项目中,我使用第三方库。我在我的项目中 git 克隆了这个库,然后在 lib 文件夹中完成了 git submodule init 和 git submodule update。我将我的主项目推送到了 github,但是这个第三方 lib 的内容没有发送,并且 lib 文件夹在我的 github 项目 repo 中看起来像一个绿色文件夹。
如果我在另一台机器上克隆我的主项目,我没有库的内容。所以,我应该在机器上再次 git 克隆库并再次运行 init 和更新命令,还是有什么方法可以推送第 3 方库的内容到我的 github 存储库?
谢谢
【问题讨论】:
标签:
git
github
git-submodules
【解决方案1】:
请注意,自 2013 年 4 月 30 日起,当您在 github.com 上查看包含子模块的存储库时,您会获得该子模块的有用链接和信息:
您现在可以看到子模块指向的确切引用。
Repository Contents API 将反映该 SHA1。
curl https://api.github.com/repos/jquery/jquery/contents/test/qunit
{
"name": "qunit",
"path": "test/qunit",
"type": "submodule",
"submodule_git_url": "git://github.com/jquery/qunit.git",
"sha": "6ca3721222109997540bd6d9ccd396902e0ad2f9",
"size": 0,
"url": "https://api.github.com/repos/jquery/jquery/contents/test/qunit?ref=master",
"git_url": "https://api.github.com/repos/jquery/qunit/git/trees/6ca3721222109997540bd6d9ccd396902e0ad2f9",
"html_url": "https://github.com/jquery/qunit/tree/6ca3721222109997540bd6d9ccd396902e0ad2f9",
"_links": {
"self": "https://api.github.com/repos/jquery/jquery/contents/test/qunit?ref=master",
"git": "https://api.github.com/repos/jquery/qunit/git/trees/6ca3721222109997540bd6d9ccd396902e0ad2f9",
"html": "https://github.com/jquery/qunit/tree/6ca3721222109997540bd6d9ccd396902e0ad2f9"
}
}
【解决方案2】:
是的,子模块本质上是一个自己的 git 存储库。父 git 项目只是引用一个特定的提交。有关如何维护它们的详细信息,请参阅 git submodule 的帮助。是的,您确实需要为每个子模块初始化和更新存储库,但是,您会发现有一些命令(在帮助中)可以为您完成很多工作。
【解决方案3】:
我遇到了同样的问题:我想从托管在 github 上的项目 repo 中尝试一些代码,所以我克隆了它。在我的同事告诉我魔法咒语之前,所有构建命令都不起作用:
git 子模块更新 --init
正确克隆了 repo 中引用的子模块。从“git submodule help”或“man git-submodule”中,我也不清楚这些。
祝你好运!