2

在我的项目中,我使用第三方库。git submodule init我有 git 在我的项目中克隆了这个库,然后git submodule update在 lib 文件夹中完成了。我将我的主项目推送到了 github,但是这个第三方 lib 的内容没有发送,并且 lib 文件夹在我的 github 项目 repo 中看起来像一个绿色文件夹。

如果我在另一台机器上克隆我的主项目,我那里没有库的内容。所以,我应该在机器上再次 git 克隆库并再次运行 init 和更新命令,还是有什么方法可以推送的内容我的 github 存储库的第 3 方库?

谢谢你

4

3 回答 3

4

请注意,自 2013 年 4 月 30 日起,当您在 github.com 上查看带有子模块的存储库时,您会获得该子模块的有用链接和信息:

子模块

您现在可以看到子模块指向的确切引用。

存储库内容 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"
  }
}
于 2013-04-30T13:11:28.940 回答
1

我遇到了同样的问题:我想尝试托管在 github 上的项目 repo 中的一些代码,所以我克隆了它。在我的同事告诉我魔法咒语之前,没有一个构建命令起作用:

git子模块更新--init

它正确地克隆了 repo 中引用的子模块。从“git submodule help”或“man git-submodule”中,我也不清楚这些。

祝你好运!

于 2015-04-08T23:09:33.470 回答
1

是的,子模块本质上是一个自己的 git 存储库。父 git 项目只是引用一个特定的提交。有关如何维护它们的详细信息,请参阅 git submodule 的帮助。是的,您确实需要为每个子模块初始化和更新存储库,但是,您会发现有一些命令(在帮助中)可以为您完成很多工作。

于 2012-11-25T14:02:39.447 回答