【问题标题】:How to include git submodules and their physical files in parent repository?如何在父存储库中包含 git 子模块及其物理文件?
【发布时间】:2018-08-28 17:04:33
【问题描述】:

故事从一个 git 存储库开始。我们就叫它宠物店吧。 宠物商店有 2 个文件夹,其中包含不同的项目。

--pet-shop          <== this is a repository
  --web             <== subfolder angular project
  --rest-api        <== subfolder python project

由于在同一个 git 存储库中,当开发人员将更改提交到 pet-shop/webpet-shop/rest-api历史记录到宠物店。这是没有意义的。就像在 web 中工作的人一样,他/她不需要知道 rest-api 中发生了什么。

因此,我试图将它们分开。我注意到 git 子模块功能。 在谷歌上搜索了一个小时后。它现在结束了 3 个 git-repositories。

--pet-shop                            <==== this is a git repository
  --web @9se5082                      <==== refer to git repo pet-shop-web
  --rest-api @defs02d                 <==== refer to git repo pet-shop-rest-api


--pet-shop-web                        <==== this is a new git repository


--pet-shop-rest-api                   <==== this is another new git repository

这满足了现在的初始要求。我可以单独提交更改。

逻辑上它们是相连的;物理上它们是分别存储的。

我现在的问题是,这样做会消耗 3 个 git 存储库,可以由 1 个存储库完成吗?

【问题讨论】:

  • 我不确定在这里使用 sumobodules 是否值得。每次开发人员更改子模块中的某些内容时,都应该更新父模块。所以他们仍然需要与其中至少 2 个一起操作。除非存在性能问题,否则我会继续使用单一存储库。

标签: github git-submodules git-subtree git


【解决方案1】:

我现在的问题是,这样做会消耗3个git仓库,可以用1个仓库来完成吗?

字面意思是“是”。您可以在一个存储库中存储多个断开连接的历史记录,只需将它们命名为不同的分支。您仍然必须在本地拥有 3 个存储库,但它们可以具有相同的远程存储库。但是您必须加倍注意不要将它们合并在一起或强制推送到错误的分支。

【讨论】:

  • 嘿@max630 从我在这里的理解来看,这是可行的,但您似乎不建议使用分支将它们拆分,以便将它们保存在同一个 git 存储库中。我担心的是扩展可能会有大量的 git 存储库。应对这种情况的最佳做法是什么?
  • 正如我在评论中所写,我不认为子模块在这里是合理的。它们确实有点难以管理。拥有一个存储库并没有多大帮助,您必须改为使用分支进行操作。这样做的唯一合理理由是当您对存储库有一些限制时,例如 github 上的私人帐户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 2014-12-14
  • 2017-11-19
相关资源
最近更新 更多