版本控制系统帮助开发人员跟踪、管理和组织他们的代码。特别是,它可以帮助开发人员与队友协作编写代码;将提交和分支等功能与特定的原则和策略相结合。有助于团队组织代码并减少管理版本控制所需的时间。
分支策略决定团队如何处理代码分支。有两种不同的分支模式:长寿命和短寿命。
对于具有多个分布式开发团队的长期、高度复杂的项目来说,长期分支是一个不错的选择。长期分支是用于处理某个功能的主线代码的副本或分支。长期分支模式最适合功能隔离开发方法。
短期模式通过短期分支提供了不同的工作方法。与可能需要数周开发时间的长期分支不同,短期分支要求开发人员在几天内集成功能更新。这种分支风格最适合持续集成开发方法。
GitFlow 分支策略
Git flow 是一种流行的 Git 分支策略,旨在简化版本管理,由软件开发人员 Vincent Driessen 于 2010 年引入。它涉及功能分支和多个主分支的使用。它有许多长期的分支和更大的提交。
Git 流策略使用 5 个分支:main、develop、feature、release 和 hotfix。
Main分支
Git flow工作流中主分支的目的是包含可以发布的生产就绪代码。
主分支是在项目开始时创建的,并在整个开发过程中维护。可以在不同的提交处标记分支,以表示代码的不同版本或版本,并且其他分支在经过充分审查和测试后将合并到主分支中。
develop分支
开发分支是在项目开始时创建的,并在整个开发过程中维护,并且包含具有正在测试过程中的新开发功能的预生产代码。
新创建的功能应该基于开发分支,然后在准备测试时合并回来。
future分支
功能分支是 Git flow工作流程中最常见的分支类型。开发新功能时使用它。
在开发新功能时,从开发分支启动一个功能分支,然后在功能完成并正确审核后将更改合并回开发分支。
release分支
准备发布新的生产版本时应使用发布分支。
通常,在发布分支上执行的工作涉及特定于发布新代码的收尾工作和小错误,这些代码应与主开发分支分开解决。
hotfix分支
修补程序分支用于快速解决主分支中的必要更改。
修补程序分支的基础应该是主分支,并且应该合并回主分支和开发分支。
将修补程序分支中的更改合并回开发分支非常重要,以保障下次发布正常。
Git Flow 策略总结
develop分支从main创建 release分支从develop创建 Feature分支创建自develop 当feature完成后,会合并到develop分支中 当release分支完成后,它会被合并到develop和main 如果main分支检测到问题,则会从main创建一个hotfix分支解决 hotfix完成后,将合并到develop和mainGitHub Flow 分支策略
GitHub Flow分支策略是一个相对简单的工作流程。主分支包含可用于生产的代码,其他分支(功能分支)应包含新功能和错误修复的工作,并将在工作完成并正确审核后合并回主分支。
在使用 GitHub Flow分支策略时,应该遵守六个原则,以确保维护良好的代码。
主分支中的任何代码都应该是可部署的。
在主分支之外创建新的描述性命名分支来开发新的功能,例如feature/add-new-payment-types。
将新代码提交到本地分支并定期将工作推送到远程。
要反馈或帮助,或者当你认为工作已准备好合并到主分支时,可以提交一个marge request。
当代码经过审核和批准后,可以将其合并到主分支中。
一旦代码被合并到主分支后,就应该立即部署。
GitHub Flow 的好处
GitHub Flow 是一种非常简单的方法。
由于工作流程的简单性,这种 Git 分支策略可以持续交付和持续集成。
这种 Git 分支策略非常适合小型团队和 Web 应用程序。
GitHub Flow 的挑战
这种 Git 分支策略无法同时支持生产中的多个版本的代码。
缺乏专门的开发分支使得 GitHub Flow 更容易受到生产中错误的影响。
GitHub Flow 是 Git Flow 的更简单替代方案,非常适合小型团队,因为它不需要管理多个版本。
与 Git Flow 不同,该模型没有发布分支。从主分支开始,然后开发人员创建分支,功能分支直接源于主分支,以隔离他们的工作,然后将其合并回主分支。最后删除该功能分支。
该模型背后的主要思想是将主代码保持在恒定的可部署状态,因此可以支持持续集成和持续交付流程。
GitLab Flow和GitFlow的区别
GitLab Flow 是 GitFlow 的更简单替代方案,它将功能驱动开发和功能分支问题跟踪相结合。使用 GitLab Flow,所有功能和修复都会转到主分支,同时启用生产和稳定分支。在 GitLab Flow中,功能分支包含新功能和错误修复的工作,这些工作将在完成、审核和批准后合并回主分支。
GitLab 流程分支策略适用于两种不同类型的发布周期:
版本化发布:每个版本都有一个基于主分支的关联版本分支。错误修复应首先合并到主分支中,然后再cherry-picked到发布分支中。
持续发布:生产分支包含可部署的代码,因此当代码准备好发布时,将其合并到生产分支中。
GitLab Flow 的好处
与 Git Flow分支策略相比,GitLab Flow更简单。
GitLab Flow比 GitHub Flow分支策略更有组织性和结构化。
经过轻微修改,GitLab 流程可以允许持续交付和版本化发布。
GitLab Flow 的挑战
GitLab Flow并不是最简单的 Git 分支策略。
GitLab Flow并不是最结构化的 Git 分支策略,这可能会导致混乱的协作。