在子模块中处理子模块

4
我在Github上管理一些存储库时遇到了一些麻烦。我正在维护一个路径查找库,主要存储库在这里:Jumper。该存储库连接了两个其他存储库,作为子模块包含在内(30logBinary-Heaps)。
当我尝试使用选项--recursive克隆主存储库(Jumper)时,它可以正常工作。
但是,当我想将此主存储库作为子模块包含在另一个存储库中,让我们称其为SuperMaster repo,然后我尝试使用--recursive克隆SuperMaster repo时,它成功克隆了存储库Jumper,但无法注册其子模块(30logBinary-Heaps),并显示类似以下内容的消息:
Failed to recurse into submodule path 
fatal: not a git repository: ../../../../c:/Users/... etc

我查了一下,发现有些人遇到过类似的问题(在这里在这里),但是这里提出的解决方案都不适用于我。


听起来 .gitmodules 文件中 Jumper 或者 SuperMaster 仓库的 URL 可能是错误的 - 你能否编辑你的问题并包含这些文件的内容?你使用了哪些命令来添加子模块?你使用的是哪个版本的 git (git --version),以及你使用的是哪个 Windows 变体(例如 mSysGit 还是 Cygwin)? - Mark Longair
嗨。我正在使用msisGit.1(v1.7.10),在Windows 7(x86)下运行。为了注册Jumper的子模块,我使用了git submodule add git://github.com/Yonaba/30log core/third-party/30log,然后是git submodule add git://github.com/Yonaba/Binary-Heaps core/third-party/Binary-Heaps。这个很好用。现在,在SuperMaster repo中,我使用git submodule add git://github.com/Yonaba/Jumper lib/Jumper将Jumper作为子模块包含进来。这个也很好用,然后我尝试使用cd lib/Jumper,然后是git submodule update --init --recursive来初始化子模块Jumper。但是它失败了。 - Roland Y.
1个回答

3
您不需要进入lib/Jumper目录,只需从顶级仓库的根目录调用git submodule update --init --recursive。子模块命令只能从仓库的根目录执行。此外,如果您使用本地url,子模块会出现相对路径的问题。您收到的错误可能意味着您正在使用本地文件路径而不是url。但最有可能的是您没有从仓库的根级别调用子模块命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接