2016-10-24 114 views
0

我有项目Foo与它自己的存储库。今天我在我的解决方案中添加现有项目:复制新项目Bar(不是我的存储库)的下载源中的所有文件,并在VisualStudio中设置参考(它编译Bar而不是Foo)。Git submodule commit

现在我在复制Bar项目和我的Foo项目中改变了一些内容。转到“Git扩展”并发现,我的项目Foo中包含的新项目Bar作为子模块,如预期的那样。

我提交Foo的本地和原点的所有更改。我想在Bar中提交所有更改,但我记得 - 这不是我的项目(我没有克隆它)。我只能在本地提交更改。如果我试图拉改变它必须像“拉请求”Bar项目的作者。

我需要做什么,那不要删除/ recopy Bar项目?我只是需要从作者回购中克隆它,而不是使用回购更改复制文件夹中的设置(将作者的原始内容更改为我),并将更改提交到我的原点。

我该怎么做?谢谢。

回答

1

如果我可以改写这个问题,它的工作原理出来:

  • 我写了一个项目($矿),并选择做一些其他的项目($他们)的子模块。
  • 然后,我修改了$,并将这些修改提交给我的存储库副本。
  • 我现在想发布我的回购($ mine)的副本以及我的修改版本的项目($ theirs + mods)的链接,但是不会发布我修改过的$的副本,因为它们尚未纳入我的更改。

答案是“这是子模块不可能的”。您的子模块必须指向包含特定提交ID的可公开访问的存储库。因此,您必须等到他们的已将并入您的更改,以便您可以使用$他们的提交,或者发布您自己的$他们的分支变体,以便存在包含可以提交的公共存储库使用。 (或者,您可以放弃子模块,将其代码直接合并到您自己的存储库中,虽然这带来了它自己的一系列问题。)