将多个站点组合成一个Git Repo

时间:2012-05-04 16:34:10

标签: git

这是我的问题。我工作的公司从一个基于osCommerce的网站开始(在我出现之前)。网站增长,他们通过复制第一个开始,并在必要时修改它。这种情况持续多年,我们现在有五个独立的网站,都基于相同的代码。当我们对一个站点进行更改时,我当前必须手动将这些更改复制到所有其他站点代码,并将所有更改的代码上载到每个站点。

这非常低效,让我发疯。我知道Git非常适合解决这些问题。目前,我有每个站点作为它自己的Git回购,但我仍然被迫将修改从一个修改为所有其他。我对Git也很陌生。我得到了提交,分支,拉,等等,但其他很绿。

无论如何,我可以将所有这些网站合并为一个单独的仓库,我该怎么做?我还应该指出,每个站点的文件不一定相同。一个站点被认为是优先级,因此在紧急情况下已经对其他站点进行了一些更改,而另一个站点的运行方式与其他站点略有不同,因此它的代码在某些地方略有不同。我意识到这会导致冲突,但我希望能够找到所有冲突,解决它们,以便系统按预期工作,并且任何变化都是数据库/选项驱动的。老板想在几个月后推出至少另外两个网站,所以那时我真的会失去理智。

我甚至想要什么?它是否需要我浏览每个文件来解决冲突?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果要将它们合并在一起,则必须放弃某些版本的修订历史记录。

  1. 选择一个版本作为起点。
  2. 为您网站的每个版本创建该版本存储库的克隆,包括原始版本。
  3. 删除每个克隆的内容,但保留.git文件夹。
  4. 将每个版本的内容(不包括.git)复制到相应的副本中。
  5. 提交
  6. 这将为您提供每个站点版本的分支,以及用于常见更改的主分支。每个分支现在都有一个共同的祖先。

    合并时,你必须小心避免使用另一个版本的变化来破坏一个版本。为了使这更容易,所有将在站点之间共享的更改应在主分支中进行,然后合并到各个版本中。合并时仍需要小心,并且可能需要使用git的cherry pick功能来移动单个变更集。当从任何非主分支机构引入更改时,您肯定需要挑选。

    如果在开始之前,您可能会使事情变得更容易,您可以重构起始分支,以便它减少特定于站点的代码。