2

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

我是该项目的首席开发人员,我在本地环境(类似 MAMP)上进行开发。每当我做了一些东西给客户看时,我都会提交我的工作并将其推送到中央 Git 主机。从那里我将它部署到连接到互联网的服务器上。然后我的客户可以看到更改。

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

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

我的问题如下:

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

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

4

2 回答 2

3

这是我对此的看法:

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

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

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

于 2012-11-22T03:14:08.353 回答
3

可以随时使用 1 个命令(git checkout)切换到功能分支。有时(在 Rails 开发模式下,我会保持应用服务器正常运行并切换代码,甚至无需重新启动服务器!)。无论我在哪个分支,我仍然处于“开发”模式。
所以切换到你想要的分支并进行演示。然后切换回 master 或您想要的任何分支。
最初我在一些组织的所有工作中都在 master 中工作,但现在我完成了所有的工作——功能、杂务或分支中的错误。通常我会用来自跟踪系统(在我们的例子中是 Pivotal Tracker)的 id 来标记分支名称和/或提交文本。
诀窍是通过频繁 git fetch 的最新 master 和 git merge master(在“主题”分支中)使分支保持最新。

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

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

总的来说,你在分支中工作,然后通过 master 推送东西。在我对 git branch、fork、fetch、merge、rebase 和 clone 的过程的回答中查看更多信息,有什么区别?

于 2012-11-22T03:32:46.647 回答