我们对git一般都比较新。我们已经使用它大约6个月了,并使用了GitHub和BitBucket。我们试图通过使用GitBash尽可能多地学习,这样我们就可以获得git的核心。
我们正处于我们真正想要考虑分支策略的阶段,因此我一直在做一些研究。
在我看来,GitFlow对我们的要求过于复杂。我们总共可以处理20个不同的项目,每个项目每2个月左右只能发布一次。看过GitHub Flow之后,这似乎是一个非常直接的选择,可以满足我们的需求 - 但它确实有一个我希望人们发表意见的缺陷。
主分支中的任何内容都是可部署的。我们部署到UAT / QA环境,其中该版本可能会保留3-4周,具体取决于客户和/或我们签署所有内容所需的时间。与此同时,其他人可能需要处理完全不同的事情。在此阶段,基于Github Flow的流程,如果该用户从Master获取分支,则他们将包括实际在此时间点仍在QA环境中的更改。那么,我是否误解了GitHub Flow的第一点 - 即主分支中的任何内容都是可部署的 - 如果代码已经通过QA等,这可能只会成立吗?
如果是这种情况,流量实际上看起来更像是?:
我认为GitHub Flow中的第1点特别令我们感到困惑 - 当发布仍处于QA状态时,我们肯定不应该回到Master - 这会使Master分支可能不稳定,当然也不会出现在生产中
答案 0 :(得分:2)
根据我在git-flow
cheat sheet和Driessen's original model上看到的内容,您遇到了一些错误。
虽然我自己没有使用git-flow
工作流程,但据我所知,master
仅在发布准备就绪时才合并,而不是之前。这样,master
总是反映了Prod中的内容 - develop
是什么作为“主要”开发分支,从中拉出和合并功能分支。因此,成功的git-flow
工作流看起来像这样(假设所有这些分支都事先存在,除非另有说明):
topic
develop
)
topic
合并回topic
develop
QA-releaseno
develop
上执行QA / UAT,根据需要提交错误修正(您也可以根据需要将QA-releaseno
合并回QA-releaseno
)。develop
合并到QA-releaseno
和master
,在develop
上标记发布,然后删除master
此外,您似乎做的是混淆QA-releaseno
和Chacon's GitHub flow。 GitHub流程,至少是最简单的形式,如下所示:
git-flow
topic
)
master
(如果您长时间工作,定期将topic
合并到其中是个好主意)master
topic
向topic
master
合并回topic
master
,或至少快速释放此工作流程专为快速发布周期(每周多次)的团队和组织而设计。质量保证不是在应用程序级别完成,而是在单个功能,任务或票证级别完成。由于发布周期具有即时(或至少是快速)反馈,master
将始终反映生产中的内容。