2012-05-02 70 views
6

(主要是一个Git的问题,但可能与其他PyroCMS用户)不能添加git的子模块存储库

我有PyroCMS的本地存储库 - 回购是一个github上叉的克隆主要项目。我也有一个PyroCMS模块,它也是项目的github fork的本地克隆。

我已经把它们放在不同的目录中。

~/Dropbox/websites/pyrocmscommunity-test/ 
~/Dropbox/github/PyroDatabase/ 

我想PyroDatabase添加为子模块pyrocmscommunity测试的,这样我就可以从GitHub获取更新,保持我自己的变化等轨道

我试图去做到这一点工作树的顶部,这样做:

git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 

,但它没有正确完成:

Cloning into 'addons/shared_addons/modules/database'... 
ssh_exchange_identification: Connection closed by remote host 
fatal: The remote end hung up unexpectedly 

我不明白这一点,因为我没有指定SSH连接,我只是想使用本地回购。它试图连接到什么?为什么?

而且,现在,每当我重复命令时,我得到这个:

'addons/shared_addons/modules' already exists in the index 

但我不明白这一点,因为没有.gitmodules文件并没有提及.gitconfig模块文件要么。

我在做什么错,我该如何重置东西?

感谢, 威廉

+0

奇怪。适用于我。我还尝试克隆一个与远程github库不同步的本地存储库,克隆本地连接到它的远程服务器的可能性很小......但这也起作用。 – GoZoner

回答

15

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

至于第二个错误的Git已经创建了索引的临时区域的条目,它必须被移除(未分级)与

git rm -r addons/shared_addons/modules 

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

git submodule add $HOME/Dropbox/github/PyroDatabase/ addons/shared_addons/modules/ 

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

+1

+1从git submodule add的文档中读取整个段落。 – djs

+0

谢谢 - 我现在更清楚了。还发现Git Book中的子模块[chapter](http://git-scm.com/book/en/Git-Tools-Submodules)有帮助。 –

2

您运行的是什么版本的git的?由于您指定的目录结构已暂存,您可能无法再次运行该命令。您可以重置这样的事情(谨慎使用该命令):调试这是怎么回事使用Git

$ git status # check what has been changed 
$ git reset --hard HEAD # destroy all working copy changes 

一个真正有用的方法是设置GIT_TRACE=1。因此,尝试运行命令再次,一旦你已经清理这样的:

$ GIT_TRACE=1 git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 
相关问题