写点什么

云小课|3 种常用 Git 工作流推荐

  • 2022 年 7 月 01 日
  • 本文字数:1792 字

    阅读完需:约 6 分钟

云小课|3种常用Git工作流推荐

本文分享自华为云社区《【云小课】应用平台第44课 常用Git工作流推荐》,作者: 应用万花筒。

1. Git 工作流—动静有法


简单来说,工作流就是开发团队预置的开发流程和解决问题时使用的协同约定。合理选择工作流可以帮助团队更好地进行项目管理与版本控制,因此在选择工作流时,需要着重考虑团队情况、规模、项目属性与版本管理计划。


2. 华为开发者常用的工作流


3. Git Flow—经典永不过时


在基于分支的代码管理工作模式中,“Git Flow”在 2010 年被提出时,便被业界认可并广泛应用,至今仍是经典,它充分发挥了 Git 分支工作模式的精髓。“Git Flow”工作模式并没有用到复杂的命令和 Git 底层的结构,是为不同的分支分配一个很明确的角色,并定义各分支之间何时、如何进行交互。类似于经典的瀑布式项目管理模型,“Git Flow”相对庞大复杂,适用于中大型研发团队,在处理复杂的研发项目时使用,项目越复杂、周期越长、需求越动荡,参与者越会感受到这个工作模式的魅力与威力,前往感受经典的魅力!


图 1 Git Flow 工作模式





在使用 Git Flow 工作模式时,业界普遍遵循的规则:


  • 所有开发分支从 develop 分支拉取。

  • 所有 hotfix 分支从 master 分支拉取。

  • 所有在 master 分支上的提交都必须要有标签,方便回滚。

  • 只要有合并到 master 分支的操作,都需要和 develop 分支合并,保证同步。

  • master 分支和 develop 分支是主要分支,都是唯一的,其它派生分支每个类型可以同时存在多个。

4. GitHub Flow—探寻敏捷之道


随着软件行业竞争日益激烈,能更快更早的为用户提供新产品特性,俨然成为各企业渴望的核心竞争力之一,敏捷文化随之而生。


当项目经理们在学习、推进敏捷改革时,开发者们也在寻求更简洁的代码托管模式,此时“GitHub Flow”进入了开发者的视线,它上手简单,却非常适配敏捷开发环境,在中小型研发项目中,用“GitHub Flow”刚刚好。


它通常有一个主分支 master,随时保持可部署状态,每个新特性或新特性集单独拉一条特性分支,例如 feature_1/2/3...,在开发完成后直接在特性分支上进行测试,测试通过的特性分支经过分支合并评审(Merge Request,简称 MR)后合并回 master 分支此模式可以保证 master 分支随时都是可部署状态。


可见,“GitHub Flow”是以 DevOps 持续交付为中心的工作模式,使用“GitHub Flow”的团队在实际开发中甚至有一天之内会实施几十次部署的,而支撑这一切的,就是这个足够简洁的工作模式以及华为 DevCloud 的CodeHub服务、自动化流水线服务。


图 2 GitHub Flow 工作模式




在使用 GitHub Flow 工作模式时,业界普遍遵循的规则:


  • 让 master 分支总是保持可以部署的状态。

  • 进行新特性或新特性集开发时要从 master 分支创建新的分支,新分支名称要具有描述性。

  • 新特性分支的 Commit 一般在本地仓库进行,当需要合并回 master 分支时,推送到远程仓。

  • 新特性分支合并回 master 分支前需要进行测试、评审与充分的交流,要确保合并后的 master 分支可用且经测试。

  • 与 master 分支合并后,即可立即部署,使线上版本符合预期。

5. Trunk Based—归本固源


Git 提供了分支这一开发策略后,各种基于分支的代码管理策略就如同雨后春笋般,纷纷被创造出来以应对各样的研发场景,如前文介绍到的适用于大型项目的 Git Flow、适用于敏捷开发的 GitHub Flow。


那么如果我是个人开发者,亦或者我们是两三人的小微团队,有没有适合我的 Git 工作模式呢?


当然有,它叫“Trunk Based”,与 GitHub-Flow 相同,它只有一条长期分支,叫做 Trunk 或者 master 即为主干,开发人员之间通过约定直接向被指定为主干的分支提交代码。“Trunk Based”是一种极简的开发模式,它主张一切开发活动都直接在主干分支完成,彻底根除了分支合并冲突的烦恼,并且项目中不会再有那些“你也说不上是干嘛的”分支存在了。因此在个人项目中,这该是最主流的开发模式了。


可以说“Trunk Based”回归了版本控制工具最本源的功能,很好理解也很好上手,对于项目的新进成员,导师不再需要培训复杂的分支定义,只需要告诉新来的“写好的代码记得 Commit 一下”。


当“Trunk Based”模式中项目需要发布版本时,可以单独拉出一条 release 分支,也可以直接在主干上发布。


没有了分支的代码隔离,测试和解决冲突都变得简单,同时也鼓励了项目成员进行更加频繁的代码集成和交互。


图 3 基于主干的工作模式




在 DevOps 环境中,为了保证正在部署的代码不会被 Commit,请灵活使用“锁”,更多了解请前往华为云CodeHub锁定代码仓库功能


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
云小课|3种常用Git工作流推荐_后端_华为云开发者联盟_InfoQ写作社区