如何将git用于附属站点?

如何将git用于附属站点?,git,version-control,Git,Version Control,我希望这是一个正确的地方问;如果没有,就揍我 我们有一个网站,目前由git维护。我们计划转售该网站,在我们的服务器上保留代码等,并对其重新命名,并为客户进行某些修改。这不是一个简单的“显示不同的CSS”,每个客户都会根据我们的核心代码进行实际的代码和逻辑修改 如何在git中最好地管理它?我看过远程设备、子模块、维护不同的存储库,但没有一个看起来像是在点击 我的计划是,我们有我们的核心代码库,每个客户(包括我们自己的站点)都有他们自己的repo(或子模块,或其他)。我们可以修改他们的特定代码,如果

我希望这是一个正确的地方问;如果没有,就揍我

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

如何在git中最好地管理它?我看过远程设备、子模块、维护不同的存储库,但没有一个看起来像是在点击

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

我想我这里的问题是表达我想要的;如果我能做到这一点,git可能会回答“这是您需要的。”


有什么想法吗

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


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

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

处理您的情况的最简单方法是使用特定于客户的
master
分支机构(例如
foo company/master
bar company/master
)。您不必为每家公司使用分支“文件夹”,但这可能有助于将特定于公司的任何内容与核心开发分开。您可以选择使用单独的远程设备,但我认为额外的复杂性不会给您带来任何好处,除非客户只需要访问其版本的代码

由于工作是在
master
中完成的,而且客户需要新功能,因此您有几个选项:

  • 定期将
    master
    合并到您的
    company/master
    分支机构中,并在发生冲突时解决冲突。根据与
    master
    的偏差范围,这可能具有挑战性
    git rere
    可能会有所帮助
  • 如果你总是考虑每个客户的定制,从“代码更改>主代码/代码>之后,你可以考虑使用<代码> ReBase<代码>来保持最新。如果变更通常得到很好的控制,这可能会使冲突解决变得更容易。或者,如果连续的更改修改了先前的冲突,您可能会一次又一次地遇到相同的冲突
  • 如果客户只需要
    master
    中的特定新功能,您可以使用
    cherry pick
    将特定功能提交到公司分支机构中

  • 你能为他们的网站/品牌代码建立一个单独的回购协议,并将你的核心代码部署为子模块吗?分支是你想要的