Git:管理多个,类似但略有不同的回购

时间:2014-03-17 02:48:27

标签: git git-branch git-fork

我是一个相对的新手。我有一个回复,对我来说有点复杂,我现在已经掉到了兔子洞里。

我从一个拥有它自己的回购的Joomla网站开始(我们称之为Repo A)。该网站启动后,我们的客户希望我们开发3个类似的网站。在大多数情况下,网站是相同的,顶部只有一些不同的风格。所以,我拿了Repo A并把它分成3个新的回购(称为B,C和D)。

随着时间的推移,我发现Repo A中的漏洞需要发送给它的孩子。为此,我在Repo A上创建了一个名为shared的分支。然后我会挑选我需要分享的提交#34; master"并将它们带到"共享"。在孩子们的回购中,我会拉入"分享"从上游分支(回购A),所以我会有最新的修复。正如您可以想象的那样,这是一个非常复杂的解决方案(所有"共享"分支提交也在" master"但具有不同的提交ID) - 但它有点工作。 / p>

现在这些网站已经成熟,我发现所有这些网站的共享越来越少。几乎所有的提交都需要与另一个仓库共享,但是所有4个仓库都不需要提交过多的提交。我认为我应该组织更多的组件而不是网站。例如,组件1在Repo A和Repo B中 - 组件2在Repo A中,C组件3在Repo A,B和D中等。

所以,对我的问题:

  1. 假设我没有搞砸一切,处理这些共享组件的最佳方法是什么?那些应该是分支机构还是更好地制作这些独特的回购?

  2. 我能做些什么让自己离开这只老鼠的巢穴?我无法通过我的历史回顾并提交提交,因为它有数百个。我试图弄清楚是否有办法让它继续前进。我想过分支我的"组件"分享"分享"回购A的分支,但我不能将该分支合并到Repo A" master"因为我关注所有樱桃选择的提交"分享"可能会撤消/覆盖自从挑选" master"以来发生的提交中的更改。我读过关于孤儿的分支,但这看起来似乎没有成功,因为父母被要求不与现有的分支发生冲突。

  3. 任何git掌握有关于如何让这个设置更有用的任何想法?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

最简单的方法是保持当前的历史不变,但是:

  • 删除公共文件,并将它们添加到新的组件仓库中 (对于您已识别的每个常见组件,重复一遍)
  • 将相关的ComponentX回购声明声明为当前现有回购的 submodules

比尝试git filter-branch to split your existing repos更容易。