如果我想将子模块的代码推送到repo,那么远程URL应该是什么?

时间:2015-09-06 13:23:02

标签: git git-submodules gerrit

这里有: 我想做什么: 我有一个项目' super'。我从url' ssh://..../prod/subproject'添加了一个子项目;作为使用' git子模块的子模块添加ssh://../subproject'

跑完后:

super/>$git submodule init
super/>$git submodule update

现在我添加了子模块。 我将一个文件添加到子项目

subproject/>$ git add somefile.js
subproject/>$ git commit -m "add some file"

现在我想将子模块的代码(' SUBPROJECT')推送到' SUPERPROJECT'的远程仓库。没有将更改推送到' SUBPROJECT'

的实际远程

基本上,'子项目'(' ssh://.... / prod /子项目')的实际远程是一些重要的回购,如果代码被推送到reivew,发送一个向更广泛的受众发出通知。

我不想这样做,我想推动' SUBPROJECT'代码(带somefile.js)到我的超级项目'这样我就可以测试somefile.js。

我希望我的本地仓库中的代码能够将子模块放在' SUPERPROJECT'没有把它推到' SUBPROJECT'。

的遥控器

我尝试的事情:

我尝试添加一个远程链接,将其推送到我的仓库:

subproject/>$git add remote subproject ssh://../superproject/subproject
subproject/>$git push subproject HEAD:refs/for/master

但是当推送时没有找到' repo没有找到'(我知道由于子项目而不是远程的git仓库)

然后我尝试将子项目直接推送到超级项目的远程,如

subproject/>$git add remote subproject ssh://../superproject
subproject/>$git push subproject HEAD:refs/for/master

现在,superproject是一个回购,但它失败了,错误"没有共同的祖先"。 我知道这是因为你不能从一个克隆并推送到另一个回购。

此外,我尝试添加整个子项目文件夹,然后推送到super作为添加新文件的更改,但它说:

[remote rejected] HEAD -> refs/for/dev/meta (database error)

任何输入? 我正在使用gerrit-所以我不能分叉项目(AFAIK我不知道是否有办法做到这一点) 附:我不确定我在这里是否有任何意义。我一直在挖掘文件2天;但据我了解这一点。

任何输入,非常感谢

1 个答案:

答案 0 :(得分:0)

您可能需要分叉原始子项目并使用fork作为子模块。这样,您可以将本地更改推送到fork。更新子模块将要求您在将更改提取到子模块之前将更改提取到分支。

在您的情况下,您可以托管您的叉子(如果您的政策不禁止您这样做)或者在gerrit中创建一个新项目并导入您的克隆。