首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套git repos与子模块的区别

嵌套git repos与子模块的区别
EN

Stack Overflow用户
提问于 2015-12-22 06:52:18
回答 1查看 934关注 0票数 1

git version - 2.6.4

我陷入了无法使用--recursive标志克隆完整回购内容的情况。

我的主存储库有两个子目录health-checkhellspawn

我创建了hellspawn作为子模块,它在.gitmodules文件中也有它的条目。

我不知道health-check是什么,是submodule还是nested-githealth-check.gitmodules中没有条目,这让我觉得可能是nested-git

如果是的话,那么为什么在克隆主存储库时我会收到git消息?

代码语言:javascript
复制
 admin@admins-MacBook-Pro.local:~/try$git clone --recursive     
 git@github.com:url/mainrepo.git 

 Cloning into 'mainrepo'...
 remote: Counting objects: 28713, done.
 remote: Compressing objects: 100% (613/613), done.
 remote: Total 28713 (delta 363), reused 5 (delta 5), pack-reused 28090
 Receiving objects: 100% (28713/28713), 788.79 MiB | 3.54 MiB/s, done.
 Resolving deltas: 100% (17645/17645), done.
 Checking connectivity... done.
 Checking out files: 100% (40522/40522), done.
 No submodule mapping found in .gitmodules for path 'health-check'

`

正如您可以看到的最后一行,如果health-check是嵌套的,那么为什么git要签入.gitmodules文件呢?由于这个错误,即使是在作为子模块的hellspawn中,我也不会下载代码。

任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-22 06:58:03

健康检查在.gitmodules中没有条目,这使我觉得它可能是嵌套的-git。

这是一个嵌套的git回购。

如果health-check是嵌套的git,那么为什么git要签入.gitmodules文件?

因为嵌套的git记录为gitlink (作为子模块),这意味着git检查special entry in the index是否与.gitmodules文件中声明的一个匹配(因为git clone--recursive选项要求克隆子模块)。

由于该特殊条目与任何.gitmodules条目路径不匹配,因此在发出警告时将失败。

由于这个错误,我甚至不会下载作为子模块的hellsp结识的代码。

有两种办法:

  1. 去掉那个特殊的条目: 试试和git rm --cached health-check (如我在“ doesn't clone submodule”中提到的,没有尾随'/‘),然后添加和推送,然后再尝试git clone --recursive
  2. 声明子模块

这就是:

代码语言:javascript
复制
git config -f .gitmodules submodule.health-check.path health-check
git config -f .gitmodules submodule.health-check.url https://github.com/<auser>/health-check

(将<auser>替换为实际的用户管理该回购)

再次,添加,推送,然后再次尝试git clone --recursive

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34410024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档