无法将git子模块添加到存储库

Wil*_*ell 6 git github git-submodules pyrocms

(主要是Git问题,但可能与其他PyroCMS用户有关)

我有一个PyroCMS的本地存储库 - repo是主项目的github fork的克隆.我还有一个PyroCMS模块,它也是项目的github分支的本地克隆.

我把它们放在不同的目录中.

~/Dropbox/websites/pyrocmscommunity-test/
~/Dropbox/github/PyroDatabase/
Run Code Online (Sandbox Code Playgroud)

我想添加PyroDatabase作为pyrocmscommunity-test 的子模块,所以我可以从github提取更新,跟踪我自己的更改等.

我尝试通过转到工作树的顶部并执行以下操作来执行此操作:

git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/
Run Code Online (Sandbox Code Playgroud)

但它没有正确完成:

Cloning into 'addons/shared_addons/modules/database'...
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我不明白这一点,因为我没有指定SSH连接,我只是想使用本地仓库.它试图连接的原因是什么?为什么?

此外,现在,每当我重复命令,我得到这个:

'addons/shared_addons/modules' already exists in the index
Run Code Online (Sandbox Code Playgroud)

但我不明白这一点,因为没有.gitmodules文件,也没有提到模块文件.gitconfig.

我做错了什么,如何重置?

谢谢,威廉

Cha*_*esB 15

为子模块位置指定相对URL时,Git将其相对于当前项目的origin(此处为Github)URL,而不是相对于文件系统上的项目位置.这是因为子模块是指向远程位置的永久指针.这里Git尝试联系原始github存储库,其中有两个级别,这是一个不正确的URL.

至于第二个错误,Git在索引的暂存区域中创建了一个条目,并且必须将其删除(未分级)

git rm -r addons/shared_addons/modules
Run Code Online (Sandbox Code Playgroud)

然后使用克隆的绝对路径重试:

git submodule add $HOME/Dropbox/github/PyroDatabase/ addons/shared_addons/modules/
Run Code Online (Sandbox Code Playgroud)

无论如何,将项目的本地克隆添加为自身的子模块是很奇怪的,因为子模块应该是包含项目的不同repo.为什么不以标准的Git方式跟踪本地和原始提交?