这里有: 我想做什么: 我有一个项目' 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天;但据我了解这一点。
任何输入,非常感谢
答案 0 :(得分:0)
您可能需要分叉原始子项目并使用fork作为子模块。这样,您可以将本地更改推送到fork。更新子模块将要求您在将更改提取到子模块之前将更改提取到分支。
在您的情况下,您可以托管您的叉子(如果您的政策不禁止您这样做)或者在gerrit中创建一个新项目并导入您的克隆。