将多个外部git回购合并为一个git回购,并且仍然能够跟踪来源

将多个外部git回购合并为一个git回购,并且仍然能够跟踪来源,git,Git,我正在移植/园艺/维护一个移动速度非常快的第三方项目,该项目由许多git回购协议组成。他们使用回购作为他们的管理者,他们的系统运行得很好。然而,我的不多。在移植过程中,我一次修改多个repo,并尝试通过命名约定将这些变更集分组在一起。但这太费时了。现在我的组织也提出了新的要求。人们不喜欢撤回数以百万计的吉特回购协议,这需要很长时间。因此,他们希望我将所有内容合并到一个git repo中,并删除repo中未使用的部分(有相当多的测试代码和它们的黄金输出) 现在的问题是:这在git中可行吗?这个可以

我正在移植/园艺/维护一个移动速度非常快的第三方项目,该项目由许多git回购协议组成。他们使用回购作为他们的管理者,他们的系统运行得很好。然而,我的不多。在移植过程中,我一次修改多个repo,并尝试通过命名约定将这些变更集分组在一起。但这太费时了。现在我的组织也提出了新的要求。人们不喜欢撤回数以百万计的吉特回购协议,这需要很长时间。因此,他们希望我将所有内容合并到一个git repo中,并删除repo中未使用的部分(有相当多的测试代码和它们的黄金输出)

现在的问题是:这在git中可行吗?这个可以吗

  A-B-C
       \
        L1

  D-E-F
       \
        L1'-L2
变成:

   A-D-E-B-C-F-L1-L2
尽管仍有可能从外部回购中提取和重新设定基准


我知道这是侵略性的,可能不是最好的主意;但我正试图避免维护另一个git回购协议,这几乎是所有修补来源的肤浅复制,不会有历史

我可能应该提到解决方案。在我的发行版中,它可以在其他git子命令中使用,您可能需要从contribs获取它。它不同于
git子树合并
,可能为最终用户和存储库管理员提供更“无缝”的体验。

。有些人可能喜欢回购,有些人,正如你已经注意到的,不喜欢。同样的事情也适用于和。我认为子树合并可以适用于您的案例,但前提是您不需要将某些更改推回到上游(仍然可以实现自动化,但有些困难),另一种可能的解决方案是创建所有存储库的本地自动镜像,以便更快地执行开发人员repo的同步,在你的局域网内,我不是在征求意见。我想知道这在技术上是否可以通过一些git魔法实现。我可以通过过滤器分支完成部分工作。但是我不知道如何跟上树梢的最新情况。目前我正在使用你的第二个建议。我有本地回购协议,我从头上拉。然后,我对变更集重新设定基准,然后通过回购向我的内部客户提供这些变更集。然而,正如我所提到的,当一个变更集同时影响多个回购时,我的生活变得相当困难。人们不喜欢等半个小时才拿到他们真正不需要的文件。因此,question.git子树合并看起来很有趣。我会读到的。谢谢你的指点。我想子树是最接近我想要的。使用它时,看起来我无法重新设置基址。每次我从外部来源提取时,它似乎都会合并。而且我也无法获取单个文件的日志。所以我决定不使用它。但这是正确的方向。谢谢