0

我希望这是问的正确地方;如果没有就打我。

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

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

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

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

有任何想法吗?

4

2 回答 2

1

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

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

于 2013-08-22T16:27:41.010 回答
0

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

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

随着工作的完成master并且客户需要新功能,您有几个选择:

  1. 定期合并master到您的company/master分支中,并在发生冲突时解决它们。根据偏离的范围master,这可能具有挑战性。git rerere可能会有所帮助。
  2. 如果您总是以“自以来的变化master”来考虑每个客户的定制,您可以考虑使用rebase来保持最新。如果更改通常得到很好的控制,这可能会使冲突解决更容易。或者,如果连续的更改修改了之前的更改,您最终可能会一遍又一遍地遇到相同的冲突。
  3. 如果客户只想要特​​定的新功能master,您可以使用cherry-pick将特定功能提交拉入公司分支机构。
于 2013-08-22T19:39:55.360 回答