2

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

这是非常低效的,让我发疯。我知道 Git 几乎就是为解决此类问题而设计的。目前,我拥有每个站点作为它自己的 Git 存储库,但我仍然被迫将修改从一个复制到所有其他站点。我对 Git 也很陌生。我得到了提交、分支、拉取等,但除此之外非常绿色。

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

我想要的甚至可能吗?是否需要我检查每个文件来解决冲突?任何帮助深表感谢!

4

1 回答 1

1

如果您想将它们合并在一起,您将不得不放弃某些版本的修订历史。

  1. 选择一个版本作为起点。
  2. 为站点的每个版本(包括原始版本)创建该版本存储库的克隆。
  3. 删除每个克隆的内容,但保持 .git 文件夹不变。
  4. 将每个版本(不包括.git)的内容复制到对应的副本中。
  5. 犯罪

这将为站点的每个版本留下一个分支,以及一个用于常见更改的主分支。现在每个分支都有一个共同的祖先。

合并时,您必须小心避免将一个版本与另一个版本的更改混为一谈。为了使这更容易,将在站点之间共享的所有更改都应在 master 分支中进行,然后合并到各种版本中。合并时您仍然需要小心,并且可能需要使用 git 的樱桃挑选功能来移动各个变更集。从任何非主分支引入更改时,您肯定需要挑选。

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

于 2012-05-04T17:02:24.693 回答