使用git进行开发、预发布和生产分支的分离

99
这篇文章听起来很有趣,但我相当确定图表是错误的。 http://guides.beanstalkapp.com/version-control/branching-best-practices.html 难道不应该是开发 > 暂存 > 生产吗?
合并只应流向一个方向:从在其自己的分支中完成的功能和错误修复或在开发中进行的功能和错误修复到暂存以进行测试。一旦测试完毕,您可以将这些更改从开发中合并到生产中。
在这里,我有点困惑。所以我应该将Staging合并到Master还是将Master合并到Staging?
我正在使用一个叫做SmartGit的客户端,我对这一点感到困惑。通常情况下,我会为功能创建一个分支,提交它,然后切换到主分支并将其合并到该分支(前进)。因此,在具有Staging和Production的新工作流程中,我将创建这两个额外的分支,然后从主分支(即开发)为我的功能创建一个分支。提交它,然后切换到Staging并向前合并到我的功能分支?这听起来正确吗?
实际上,这让人感到困惑的是Beanstalk的人坚持使用非常不标准的“Staging”(在他们的图表中它出现在开发之前,并且这不是一个错误!https://twitter.com/Beanstalkapp/status/306129447885631488)。决定放弃Beanstalk,转而使用Github。
自从我发布了这篇文章,Beanstalk的人采纳了我的建议,将他们的阶段重新命名,现在将开发称为“稳定”。

1
您可能希望将修复程序从暂存区合并到生产环境。在测试的目的下合并到暂存区,然后在测试完成后将开发合并到生产环境,这样会留下开发中未合并到暂存区但最终合并到生产环境的额外工作的可能性。 - wadesworld
经典的分支工作流在Git中不易应用,因为Git中的分支更加轻量级。它们只是指向历史记录中(单个)提交的指针,而历史记录本身可以朝多个方向分支。这就是为什么很难将分支视为“分离开发”的“线路”的原因(这也适用于“成功的Git分支模型”中的图表)。 - poke
是的,这不完全是泳道。但我的问题更具体:我是切换到Staging并合并到dev,还是反之?我对git很陌生,容易混淆。也许我应该直接向SmartGit的制造商提出问题,因为它是我的Windows git客户端。 - ChatGPT
我正在寻找的确切问题。在谷歌上搜索并得到了第一条结果。Yaay (y) - Smile
4个回答

123
这里的思路是在开发过程中,你会大部分时间都花在开发上。在开发时,你会创建一个特性分支(基于开发),完成该特性,然后合并回到开发。之后,通过合并到生产,可以将其添加到最终的生产版本中。
有关此方法的更多详细信息,请参见成功的Git分支模型

36
+1 对于“成功的Git分支模型”来说,这基本上已成为Git工作流程的标准。 - Mike Weller
14
对于只涉及少数人员的较小项目来说,《成功的Git分支模型》有点复杂。我更倾向于一种更简单的方法,即在主分支中进行开发,并在主分支上对稳定版本进行标记,如果需要修补,则为它们创建稳定分支。请参阅https://dev59.com/62Uq5IYBdhLWcg3wBL3j#14858295和http://scottchacon.com/2011/08/31/github-flow.html。 - Josef Kufner
2
@eykanal 你是将development合并到production还是将feature合并到production - endo64
9
这篇文章中没有暂存分支。他们如何从开发服务器部署到暂存环境?我只看到他们直接从开发环境合并到主分支中来部署到生产环境,但这是不安全的,因为它跳过了暂存环境,对吗? - Raz Buchnik

8
我们的做法与众不同。在我看来,我们采用更简单的方式:在master上开发下一个主要版本。
每个较大的功能都有自己的分支(派生自master),并且将由开发人员定期在master上进行变基(+强制推送)。只有一个开发人员在此功能上工作时,重新定位才能正常工作。如果该功能完成,则会将其重新定位到master上,然后将master快进到最新的功能提交。
为避免重新定位/强制推送,还可以定期合并master更改到功能分支中,如果完成了,则将功能分支合并到master中(普通合并或压缩合并)。但是,在我看来,这使得功能分支不太清晰,并且使重排序/清理提交变得更加困难。
如果即将发布新版本,则从master创建一个侧分支,例如release-5,仅修复错误。

24
我不知道那些话的意思。 - ChatGPT
7
你不理解的具体是什么? - Mot

4

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接