我已经阅读了@nvie的Git branching model和gitflow,我认为这是一个很好的模型,可用于我目前正在进行的项目(Web应用程序)。
我是该项目的首席开发人员,我在本地环境(类似MAMP)上开发。每当我做了一些向客户展示的东西时,我都会将我的工作投入到Git主机中心。从那里我将它部署到连接到互联网的服务器。然后我的客户可以看到变化。
第二个开发人员刚刚开始研究这个项目。他一次开发单个功能,并在准备好时将它们推送到Git中央主机。我在部署之前检查了他的工作。
目前,所有提交都在master
分支中完成,并部署到单个托管环境。在未来,我希望有一个生产环境(用于实际使用),测试环境(在应用程序发布之前测试应用程序的新版本)和开发环境(我可以在其中显示已完成的功能或仍在进行中的客户)。我认为生产环境将从master
部署,而开发环境将从develop
部署。
我的问题如下:
我经常同时处理几项任务。当功能的一部分准备就绪时,我有时希望在继续使用该功能之前将其显示给我的客户端。但是,根据我的理解,功能(分支)只有在完成并计划发布时才会合并到develop
。如何向客户端(在开发环境中)显示正在进行(或尚未安排发布)的功能?
我应该从哪个分支部署到测试环境?我应该手动选择当时的发布分支,还是可以有专门的测试分支?
答案 0 :(得分: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?
的流程回答中的更多信息