研发管理知识库(7)什么是Gitflow?
摘要: Gitflow是一种基于Git的分支管理模型,由Vincent Driessen提出,适用于版本化发布的项目。其核心是维护develop和main两条主分支,并辅以feature、release和hotfix分支。具体流程包括:从develop创建feature分支并合并回develop;release分支完成后同步至develop和main;hotfix直接基于main修复并合并到两条主
Gitflow是一种传统的Git工作流程,用于管理Git 分支。Gitflow 越来越受欢迎,支持基干主干的工作流程,这些工作流 程现在被认为是现代持续软件开发和 DevOps实践的最佳实践。将Gitflow与 CI/CD一起使用也可能具有挑战性。
1.概念
Gitflow是一种替代的Git分支模型,它使用功能分支和多个主分支。它最初由Vincent Driessen在nvie发布并广受欢迎。
Vincent Driessen 是一位来自荷兰的软件工程师,他在技术社区中广为人知的身份是其个人博客“nvie.com”以及在线昵称 nvie。他最为人熟知的贡献是提出了一套对现代软件开发产生深远影响的 Git 分支模型。Vincent Driessen 提出的 Git Flow模型是他在软件工程领域最著名的贡献。该模型在2010年通过他的博文《A successful Git branching model》发布,迅速被全球众多开发团队所采纳 。
与基于主干的开发相比,Gitflow 有许多寿命更长的分支和更大的提交。在此模型下,开发人员创建一个功能分支并将其合并到主干分支直到该功能完成。这些长期的功能分支需要更多的协作才能合并,因为它们偏离主干分支并引入冲突更新的风险更高。他们还可能引入冲突的更新。
Gitflow可用于有预定发布周期的项目,也可用于持续交付的DevOps最佳实践。 除 了功能分支工作流程所需的概念或命令 外 ,此工作流程不会添加任何新概念或命令。相反,它为不同 的分支分配了非常具体的角色,并定义了它们应该如何以及何 时进行交互。除了 feature分支外,它还使用单独分支来准备、维护和录制版本。当然,您还可以利用功能分支工作流程的所有优势:拉取请求、隔离实验和更高效的协作。
2.工作原理

(1)develop 和 main 分支
此工作流程不是单个main 分支,而是使用两个分支来记录项目的历史记录。 main分支存储官方版本历史记录, develop分支充当功能的集成分支。使用版本号标记 main分支中的所有提交也很方便。
第一步是用 develop 分支来补充默认的 main 分支。一个简单的方法是让一个开发人员在本地
创建一个空的 develop 分支并将其推送到服务器。
该分支将包含项目的完整历史记录,而 main 分支将包含删节版本。其他开发人员现在应该克隆
中央存储库并创建一个用于 develop的跟踪分支。
(2)feature分支
步骤1.创建代码库
每项新功能都应位于自己的分支中,可以将其推送到中央存储库进行备份/协作。但是,
feature 分支不是从 main分支中分支,而是使用 develop 作为其父分支。 一个feature 完 成后,就会合并回develop中。 feature不应直接与 main 交互。

请注意,无论出于何种意图和目的, feature分支与 develop分支相结合都是功能分支工作流。但是, Gitflow工作流并不止于此。
feature分支通常是在最新的 develop分支基础上创建的。
一旦 develop 获得了足够的功能来发布某个版本(或者预先确定的发布日期即将到来),您就可
以从 develop中分离出一个 release分支。创建此分支将启动下一个发布周期,因此在此之
后无法添加任何新功能--只有错误修复、文档生成和其他面向发布的任务才能进入该分支。 一旦
准备好发布, develop 分支就会合并到 main分支中,并用版本号进行标记。此外,它应该合
并回 develop 中,该分支自发布以来可能已经取得了进展。
使用专门的分支来准备发布可以让一个团队完善当前版本,而另一个团队可以继续为下一个版本
开发功能。它还创建了定义明确的开发阶段(例如,很容易说“本周我们正在为版本4.0做准
备”,也可以在存储库的结构中真正看到它)。
创建 release分支是另一个简单直接的分支操作。与 feature分支 一样,release 分支也
基于 develop分支。可以使用以下方法创建新的 release分支。
(3)hotfix分支

有专门的错误修复开发线可以让您的团队在不中断工作流程其余部分或等待下一个发布周期的
情况下解决问题。您可以将维护分支视为直接与 main 配合使用的临时 release 分支。可以使 用以下方法创建 hotfix 分支:
与完成 release 分支类似, hotfix 分支会合并到 main 和 develop中。
3.摘 要
这里我们讨论了Gitflow 工作流。Gitflow 是您和团队可以使用的众多Git 工作流程之一。
关于 Gitflow 需要了解的一些关键要点是:
●该工作流非常适合基于版本的软件工作流。
● Gitflow 为生产hotfix提供专用渠道。
Gitflow 的总体流程是:
1.develop分支是从main中创建的
2.release分支是从develop分支中创建的
3.feature分支是从develop分支中创建的
4.feature完成后 ,它会合并到develop 分支
5.release分支完成后,它将合并到 develop和 main 中
6.如果在 main 中检测到问题,则会从 main 创建 hotfix 分支
7.hotfix完成后,它将合并到 develop 和 main 中
更多推荐

所有评论(0)