Git 子模块提交
Git submodule commit
我有项目 Foo
,它有自己的存储库。今天我在我的解决方案中添加现有项目:从新项目 Bar
(不是我的存储库)的下载源复制所有文件,并在 VisualStudio 中设置引用(它编译 Bar
而不是 Foo
)。
现在我更改了复制的 Bar
项目和我的 Foo
项目中的一些内容。转到 "Git Extensions",发现新项目 Bar
作为子模块包含在我的项目 Foo
中,正如预期的那样。
我提交了 Foo 的本地和来源的所有更改。我想提交 Bar
中的所有更改,但我记得 - 这不是我的项目(我没有克隆它)。我只能在本地提交更改。如果我尝试拉动更改,它必须像 "Pull request" 到 Bar
项目的作者。
我需要做什么,不delete/recopy Bar
项目?我只需要从作者 repo 克隆它,而不是使用 repo 更改复制文件夹中的设置(将来源从作者的更改为我的),然后将更改提交到我的来源。
我该怎么做?谢谢。
如果我可以重新表述这个问题,结果是:
- 我写了一个项目($mine)并选择将其他项目($theirs)作为子模块。
- 然后我修改了他们的 $ 并将这些修改提交到我的他们存储库的副本。
- 我现在想发布我的 repo ($mine) 的副本以及 link 到他们项目的修改版本 ($theirs + mods),但不发布我修改的副本-$他们的,因为他们还没有合并我的更改。
答案是"this is not possible with submodules"。您的子模块必须指向包含特定提交 ID 的 publicly 可访问存储库。因此,您必须等到他们 已经 合并了您的更改,以便您可以使用 $theirs 中的提交,或者发布您自己的 $theirs 的分叉变体,以便有public 包含您可以使用的提交的存储库。
(或者,您可以放弃子模块,将它们的代码直接合并到您自己的存储库中,尽管这会带来一系列问题。)
我有项目 Foo
,它有自己的存储库。今天我在我的解决方案中添加现有项目:从新项目 Bar
(不是我的存储库)的下载源复制所有文件,并在 VisualStudio 中设置引用(它编译 Bar
而不是 Foo
)。
现在我更改了复制的 Bar
项目和我的 Foo
项目中的一些内容。转到 "Git Extensions",发现新项目 Bar
作为子模块包含在我的项目 Foo
中,正如预期的那样。
我提交了 Foo 的本地和来源的所有更改。我想提交 Bar
中的所有更改,但我记得 - 这不是我的项目(我没有克隆它)。我只能在本地提交更改。如果我尝试拉动更改,它必须像 "Pull request" 到 Bar
项目的作者。
我需要做什么,不delete/recopy Bar
项目?我只需要从作者 repo 克隆它,而不是使用 repo 更改复制文件夹中的设置(将来源从作者的更改为我的),然后将更改提交到我的来源。
我该怎么做?谢谢。
如果我可以重新表述这个问题,结果是:
- 我写了一个项目($mine)并选择将其他项目($theirs)作为子模块。
- 然后我修改了他们的 $ 并将这些修改提交到我的他们存储库的副本。
- 我现在想发布我的 repo ($mine) 的副本以及 link 到他们项目的修改版本 ($theirs + mods),但不发布我修改的副本-$他们的,因为他们还没有合并我的更改。
答案是"this is not possible with submodules"。您的子模块必须指向包含特定提交 ID 的 publicly 可访问存储库。因此,您必须等到他们 已经 合并了您的更改,以便您可以使用 $theirs 中的提交,或者发布您自己的 $theirs 的分叉变体,以便有public 包含您可以使用的提交的存储库。
(或者,您可以放弃子模块,将它们的代码直接合并到您自己的存储库中,尽管这会带来一系列问题。)