如何在子网站上使用git?

时间:2013-08-22 16:16:54

标签: git version-control

我希望这是一个正确的地方;如果没有,请打我。

我们有一个网站,目前使用git进行维护。我们计划转售网站,将代码等保存在我们的服务器上并对其进行重新定位并对客户进行某些修改。它不是一个简单的“显示不同的CSS”,每个客户将根据我们的核心代码进行实际的代码和逻辑修改。

如何最好地在git中管理这个?我看过遥控器,子模块,维护不同的存储库,但似乎没有点击。

我的计划是,我们拥有核心代码存储库,每个客户(包括我们自己的网站)都有自己的回购(或子模块,或者没有)。我们可以修改他们的特定代码,如果我们需要将内容推送到中央代码,那么也应该很容易将其推送到客户站点。

我认为我的问题在于表达我想要的东西;如果我能做到这一点,那么git可能会回答“这就是你需要的东西。”

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定为什么一个简单的分支在你的情况下不起作用。如果您有访问控制问题,您可以随时将这些分支推送到不同的存储库(可选择在不同的计算机上),但根据您描述的内容,我认为子模块或任何花哨的东西都没有意义。

然后,您可以在达到里程碑时将“核心代码”分支合并到每个客户的分支中。

答案 1 :(得分:0)

在Git中,master分支并没有什么特别的,除了它是你开始的地方。大多数人使用master作为其所有分支的“主干”,我希望您可以使用核心代码库。

处理您情况的最简单方法是使用客户特定的master分支(例如foo-company/masterbar-company/master)。您不必为每个公司使用分支“文件夹”,但它可能有助于将公司特定的任何内容与核心开发人员分开。您可以选择使用单独的遥控器,但我不认为额外的复杂性会让您获得任何,除非客户只需要访问他们的代码版本。 / p>

由于工作在master完成,而客户想要新功能,您可以选择以下几种方法:

  1. 定期将master合并到company/master分支机构,并在发生冲突时解决冲突。根据偏离master的范围,这可能具有挑战性。 git rerere可能有帮助。
  2. 如果您始终根据“master以来的更改”来考虑每个客户的自定义,则可以考虑使用rebase来保持最新状态。如果更改通常包含良好,则可能会使冲突解决更容易。或者,如果连续的更改修改了之前的冲突,您可能会一次又一次地遇到相同的冲突。
  3. 如果客户只需要master中的特定新功能,您可以使用cherry-pick将特定功能提交提取到公司分支中。