在@nvie的Git分支模型中开发和测试分支?

时间:2012-11-21 18:00:00

标签: git version-control branch git-flow branching-strategy

我已经阅读了@nvie的Git branching modelgitflow,我认为这是一个很好的模型,可用于我目前正在进行的项目(Web应用程序)。

我是该项目的首席开发人员,我在本地环境(类似MAMP)上开发。每当我做了一些向客户展示的东西时,我都会将我的工作投入到Git主机中心。从那里我将它部署到连接到互联网的服务器。然后我的客户可以看到变化。

第二个开发人员刚刚开始研究这个项目。他一次开发单个功能,并在准备好时将它们推送到Git中央主机。我在部署之前检查了他的工作。

目前,所有提交都在master分支中完成,并部署到单个托管环境。在未来,我希望有一个生产环境(用于实际使用),测试环境(在应用程序发布之前测试应用程序的新版本)和开发环境(我可以在其中显示已完成的功能或仍在进行中的客户)。我认为生产环境将从master部署,而开发环境将从develop部署。

我的问题如下:

  1. 我经常同时处理几项任务。当功能的一部分准备就绪时,我有时希望在继续使用该功能之前将其显示给我的客户端。但是,根据我的理解,功能(分支)只有在完成并计划发布时才会合并到develop。如何向客户端(在开发环境中)显示正在进行(或尚未安排发布)的功能?

  2. 我应该从哪个分支部署到测试环境?我应该手动选择当时的发布分支,还是可以有专门的测试分支?

2 个答案:

答案 0 :(得分:3)

以下是我对此的看法:

  1. 您可以将要显示的功能分支部署到开发环境。请记住在客户看到新功能后部署开发分支。

  2. 对于测试环境,您使用发布分支。在测试期结束并且您已经发布了应用程序之后,您将主分支部署到测试环境,直到下一个发布计划。

  3. 免责声明:我是git-flow(AVH版)的开发者 您需要记住的是,原始的gitflow软件不会删除远程功能和发布分支。因此,当您使用原始gitflow完成功能或发布时,您需要手动删除远程分支。在git-flow (AVH Edition)中,软件负责处理它。

答案 1 :(得分:3)

可以使用1个命令(git checkout)随时切换功能分支。有时候(在rails中,开发模式我会保持app服务器的运行并在没有重启服务器的情况下切换代码!)。无论我在哪个分支机构,我仍然处于“开发”模式 所以切换到你想要的分支并进行演示。然后切换回主人或你想要的任何分支。
最初我在一些org的大师工作,但现在我做我的所有工作 - 分支中的功能,家务或错误。通常我会用跟踪系统中的id标记分支名称和/或提交文本(在我们的例子中是Pivotal Tracker)。
诀窍是使用最新的master和git merge master的频繁git fetch保持分支最新(在'topic'分支中)。

对于我配置遥控器的其他环境,例如mycoolapp-stage和我分别将代码推送给他们。我有大约6个不同的远程1个应用程序,其中4个用于测试。

对于测试,测试人员可以下拉变更并在开发环境中本地工作(适用于程序员和QA测试人员),或者他们可以使用将代码推送到远程的测试或暂存区域。

总的来说,你在分支机构工作,然后通过主人推送东西。请参阅我在git branch, fork, fetch, merge, rebase and clone, what are the differences?

的流程回答中的更多信息