是否可以嵌套git repos,但只有一个Github repo

时间:2017-06-03 05:11:36

标签: git github

我知道“如何嵌套git repos”有很多问题,而且大多数都推荐使用子模块。但是,我看到的所有代码片段都将子模块连接到一个单独的git url。在我的情况下,我唯一的git遥控器是在GitHub上,但我希望子模块在索引中不可见。不可否认,我的理由有点浅薄;我有超过150个回购,我想结合其中一堆,使列表更易于导航。但是我不想失去修订历史。

现在我只看到两个选项,两者都不合适:

  1. 将所有提交历史合并到一个树
  2. 保持现状,通过Github可以查看每个仓库。

3 个答案:

答案 0 :(得分:1)

没有

“GitHub repo”正好是一个Git回购。虽然有 方法可以使用Git(通过子模块或将repos合并为一个)来实现这一目的,但是你已经将它们作为不可行的消除了。

答案 1 :(得分:1)

  

将所有提交历史记录合并到一个树

这就是monorepo方法,你看到大型组织(Facebook,谷歌,微软)越来越多地使用

Microsoft已one giant Git repo for Windows,但这是因为它使用了GVFS (Git Virtual FileSystem)

在您的情况下,您可以尝试merge your repo (with git subtree for instance)(或as another option, some merge --squash

答案 2 :(得分:1)

您可以使用子树将整个存储库视为一个。

我认为解决方案可能是subtrees。使用子树,您可以在中央存储库中开发存储在其他存储库中的元素。

这意味着您可以拥有

  • 主要项目
  • 组件A
  • 组件B

您可以将组件A和B放在separate存储库中。有自己的自述文件等。那些不是独立的库:只是项目的一部分(子树)。

更新组件X

要更新组件X,您只需克隆组件并进行更新即可。但是等等,......这有点令人困惑,所以,...你可以在主git存储库中拉下子树并将子树推入其遥控器。