Git子模块提交

时间:2016-10-24 07:57:13

标签: git github git-submodules git-clone

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

现在我在复制的Bar项目和我的Foo项目中更改了一些内容。转到" Git Extensions"并发现,我的项目Bar中包含的新项目Foo是子模块,正如预期的那样。

我承诺Foo的本地和起源的所有更改。我想在Bar中提交所有更改,但我记得 - 它不是我的项目(我没有克隆它)。我只能在本地提交更改。如果我试图拉动变化,它必须像"拉请求"致Bar项目的作者。

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

我怎么能这样做?感谢。

1 个答案:

答案 0 :(得分:1)

如果我可以改写这个问题,那就是:

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

答案是"对于子模块"这是不可能的。您的子模块必须指向包含特定提交ID的可公开访问的存储库。因此,您必须等到合并您的更改,以便您可以使用$ theirs,或者发布您自己的$ theirs的分叉变体,以便有一个公共存储库包含您可以使用的提交。

(或者,您可以放弃子模块,将其代码直接合并到您自己的存储库中,尽管这会带来一系列问题。)