6

在我的第一个问题之后,我想确认一下我的最佳 git 工作流程。

我有一个 django 项目,托管在 github 上,并且每个分支都有不同的克隆:customerA、customerB、demo...(想想网站)

分支共享相同的核心,但具有不同的数据和设置(这些在 gitignore 中)

当我在 CustomerA 分支上工作时,我应该如何将一些错误更正复制到其他部署?

当我创建一个新的通用特性时,我会创建一个特殊的分支,然后将它合并到我的主分支中。然后,为了部署在“客户端”上,我将主分支合并到客户分支中。这是正确的方法吗?还是我应该变基?

# from customerA branch
git fetch origin master
git merge origin master

此外,我为每个客户创建了一个远程分支,因此我可以将客户分支备份到 github。

它看起来是一个非常经典的问题,但我想我没有正确使用 git

谢谢。

朱。

4

4 回答 4

3

我会在一个著名的地方有一个项目仓库,其中包含一个带有公共代码的主分支,以及用于特定部署的分支(例如客户/A 客户/B 演示)。

然后我会为每个客户、演示服务器等从这些分支机构中的每一个结账。您可以使用单个项目 repo 上的提交挂钩让它们自动从各自的分支中提取。

每个开发人员都将拥有项目 repo 的本地副本,进行本地工作,然后将内容推送回单个项目 repo。

挑战将是保持与 master 不同的分支并进行定期合并,以便转移不会随着时间的推移而增长。

我已经看到这个解决方案在网上某个地方更详细地描述了某个地方,但我再也找不到它了。一些关于将 git 用于登台和生产 Web 服务器 IIRC 的博客文章。

于 2009-10-13T15:05:44.203 回答
1

如果三个站点共享一些“核心”代码(例如 Django 应用程序),您应该将该核心分解到自己的存储库中,并使用git 子模块将其包含在其他项目中,而不是复制它。

于 2009-10-17T08:40:39.187 回答
0

我会有一个名为 project-master 的仓库或类似的仓库,并为每个客户提供一个仓库。然后,当您有代码可供这些客户端存储库使用时,您可以从项目主库拉到该存储库。

于 2009-10-12T18:38:53.810 回答
0

不要将分支中的项目分开,将它们分开到不同的存储库中。

使“通用”代码足够通用,以便客户A 的通用代码副本与客户B 的通用代码副本完全相同。

然后,您不必拉取或合并任何东西。当您更新公共代码时,costumerA 和 costerB 都会自动获得更新(因为它们使用相同的公共代码)。

通过“通用”代码:我指的是为您正在开发的网站提供动力的软件包/应用程序系列。

我假设costumerA 和costumerB 存储库只包含特定于站点的设置和模板之类的东西。

这里的关键是使“通用”代码通用:不要让客户A 使用“通用”代码的“稍微修改版本”。

另外,我建议使用不依赖 git 的部署机制。git 是一个很棒的源代码管理工具;但它的设计(AFAIK)并不是一个部署工具。

于 2009-10-19T02:07:25.347 回答