GitHub流程和版本

时间:2016-11-28 15:46:57

标签: git github git-flow

我们对git一般都比较新。我们已经使用它大约6个月了,并使用了GitHub和BitBucket。我们试图通过使用GitBash尽可能多地学习,这样我们就可以获得git的核心。

我们正处于我们真正想要考虑分支策略的阶段,因此我一直在做一些研究。

在我看来,GitFlow对我们的要求过于复杂。我们总共可以处理20个不同的项目,每个项目每2个月左右只能发布一次。看过GitHub Flow之后,这似乎是一个非常直接的选择,可以满足我们的需求 - 但它确实有一个我希望人们发表意见的缺陷。

主分支中的任何内容都是可部署的。我们部署到UAT / QA环境,其中该版本可能会保留3-4周,具体取决于客户和/或我们签署所有内容所需的时间。与此同时,其他人可能需要处理完全不同的事情。在此阶段,基于Github Flow的流程,如果该用户从Master获取分支,则他们将包括实际在此时间点仍在QA环境中的更改。那么,我是否误解了GitHub Flow的第一点 - 即主分支中的任何内容都是可部署的 - 如果代码已经通过QA等,这可能只会成立吗?

如果是这种情况,流量实际上看起来更像是?:

  • 从Master那里拿一个分店
  • 提交分支中的更改(此阶段仅返回分支)
  • 使用名为“Develop”的单独分支合并分支
  • 发布到QA / UAT
  • 当批准发布时,将分支与主服务合并并部署?

我认为GitHub Flow中的第1点特别令我们感到困惑 - 当发布仍处于QA状态时,我们肯定不应该回到Master - 这会使Master分支可能不稳定,当然也不会出现在生产中

1 个答案:

答案 0 :(得分:2)

根据我在git-flow cheat sheetDriessen's original model上看到的内容,您遇到了一些错误。

虽然我自己没有使用git-flow工作流程,但据我所知,master仅在发布准备就绪时才合并,而不是之前。这样,master 总是反映了Prod中的内容 - develop是什么作为“主要”开发分支,从中拉出和合并功能分支。因此,成功的git-flow工作流看起来像这样(假设所有这些分支都事先存在,除非另有说明):

  1. topic
  2. 创建一个功能分支(我们称之为develop
  3. 在[{1}}上工作一段时间
  4. topic合并回topic
  5. 再做几次,直到你准备好发布
  6. develop
  7. 创建一个新分支QA-releaseno
  8. develop上执行QA / UAT,根据需要提交错误修正(您也可以根据需要将QA-releaseno合并回QA-releaseno)。
  9. 当您准备发布时,将develop合并到QA-releasenomaster,在develop上标记发布,然后删除master
  10. 此外,您似乎做的是混淆QA-releasenoChacon's GitHub flow。 GitHub流程,至少是最简单的形式,如下所示:

    1. git-flow
    2. 分拆新主题分支(此处称为topic
    3. 工作master(如果您长时间工作,定期将topic合并到其中是个好主意)
    4. master
    5. 上执行质量检查
    6. topictopic
    7. 提出拉取请求(PR)
    8. 对PR进行代码审核后,每个人都满意,将master合并回topic
    9. 立即释放master,或至少快速释放
    10. 此工作流程专为快速发布周期(每周多次)的团队和组织而设计。质量保证不是在应用程序级别完成,而是在单个功能,任务或票证级别完成。由于发布周期具有即时(或至少是快速)反馈,master将始终反映生产中的内容。