0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Git最佳实践,什么才是最佳工作流

PLC工控专栏 来源:加密狗破解 作者:加密狗破解 2022-02-21 17:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

很久以前我出过一个 Git 教程,小伙伴们要是还不懂 Git 的用法,可以在公众号底部菜单中,有一个教程合集,里边有 Git 教程的索引

今天我们不聊基本用法,聊一聊 Git 到底应该怎么用?我们知道相比于 Svn,Git 最牛的地方在于它的分支,分支很灵活,但是如果缺乏一个使用套路,又会用的乱糟糟的,特别是在团队协作中,该怎么玩 Git 分支?

咱们也不发明什么轮子,也不设计什么全新流程,本文主要是和大家介绍三种常见的工作流:Git Flow、GitHub Flow 以及 GitLab Flow。介绍完成后,在谈谈松哥的一些使用体验。

1. Git Flow

先来看 Git Flow。

Git Flow 是最早诞生也是最早被广泛使用的工作流程。

在 Git Flow 中,有两个长期存在且不会被删除的分支:masterdevelop

在这两个分支中,master 主要用于对外发布稳定的新版本,该分支时常保持着软件可以正常运行的状态,由于要维护这一状态,所以不允许开发者直接对 master 分支的代码进行修改和提交,其他分支的开发工作进展到可以发布的程度后,将会与 master 分支进行合并,并且这一合并只在发版时进行,发布时将会附加版本编号的 Git 标签

develop 则用来存放我们最新开发的代码,这个分支是我们开发过程中代码中心分支,这个分支也不允许开发者直接进行修改和提交。程序员要以 develop 分支为起点新建 feature 分支,在 feature 分支中进行新功能的开发或者代码的修正,也就是说 develop 分支维系着开发过程中的最新代码,以便程序员创建 feature 分支进行自己的工作。

注意 develop 合并的时候,不要使用 fast-farward merge,建议加上 --no-ff 参数,这样在 master 上就会有合并记录,关于这两个的区别,大家可以参数松哥之前的 Git 教程,这里不再赘述。

除了这两个永久分支,还有三个临时分支:feature branches、hotfixes 以及 release branches。我们分别来看:

feature branches

这个是特性分支,也叫功能分支,当你需要开发一个新的功能的时候,可以新建一个 feature-xxx 的分支,在里边开发新功能,这也是我们日常工作的大本营,开发完成后,将之并入 develop 分支中,如下图:

hotfixes branches

这个分支看名字就是用来修复 BUG 的,当我们的项目上线后,发现有 BUG 需要修复,那么就从 Master 上拉一个名为 fixbug-xxx 的分支,然后进行 BUG 修复,修复完成后,再将代码合并到 Master 和 Develop 两个分支中,然后删除 hotfix 分支,如下图:

release branches

这个是发版的时候拉的分支,当我们所有的功能做完之后,准备要将代码合并到 master 的时候,从 develop 上拉一个 release-xxx 分支出来,这个分支一般处理发版前的一些提交以及客户体验之后小 BUG 的修复(BUG 修复后也可以将之合并进 develop),不要在这个里边去开发功能,在预发布结束后,将该分支合并进 develop 以及 master,然后删除 release,如下图:

大概就是这个意思。

松哥工作中用的其实就是类似于 Git Flow 的工作流,为什么说是类似呢?我们项目中主要是保证了 master、develop 以及 release 三个分支,在此基础之上,其他随意。

2. GitHub Flow

GitHub Flow 相比于 Git Flow 就要容易很多了,GitHub Flow 也是 GitHub 上使用的工作流程,如果你想参与 GitHub 上的某一个开源项目,那么不妨看看 GitHub Flow。

官方给的 GitHub Flow 流程如下:

它的流程是这样的:

  1. 需要开发新功能或者修复 BUG 的时候,从 master 上拉一个新的分支下来。
  2. 新的分支开发完成后,或者说当你遇到困难开发不下去的时候,都可以发起一个 pr(Pull Request)。
  3. pr 既提交代码,也让其他同事 review 你的代码,在这个过程中,你可以不断提交 pr。
  4. 最终你的 pr 被接受,合并进 master。

GitHub 工作流虽然用着很简单,但是他的问题也很明显,就是没有对常见的工作场景中的问题提出解决办法。

3. GitLab Flow

GitLab Flow 结合了 Git Flow 与 GitHub Flow 的优点,它不像 Git Flow 有那么多容易把新手绕晕的分支,同时它又可以适应不同的开发环境。

GitLab Flow 的最大原则叫做 upstream first,中文译作“上游优先”:即只存在一个主分支 master,它是所有其他分支的 upstream,只有上游分支采纳的代码变化,才能应用到其他分支。

对于“持续发布”的项目,我们可以在 master 分支以外,再建立不同的环境分支。例如开发的分支是 master,预发布的分支是 pre-production,生产环境的分支是 production。

在这里开发分支是预发分支的 upstream,预发分支又是生产分支的 upstream。代码的变化,必须由上游下游发展。比如,生产环境出现了 bug,这时就要新建一个功能分支,先把它合并到 master,确认没有问题,再 cherry-pick 到 pre-production,这一步也没有问题,才进入 production,如下图:

只有紧急情况,才允许跳过上游,直接合并到下游分支。

有稳定的版本需要发布时,我们就从 master 上拉一个新的分支出来,作为发版时候的分支,这些分支上不要开发新功能,只有修补 BUG 的时候

对于”版本发布”的项目,建议的做法是每一个稳定版本,都要从master分支拉出一个分支,比如2-3-stable、2-4-stable等等。

以后,只有修补bug,才允许将代码合并到这些分支,并且此时要更新小版本号即可。

4. 小结

好啦这就是常见的三个 Git 玩转流程,其实我们自己开发不必这么死板,结合自己的项目来就行了,松哥的项目,master、develop 以及 release 三个分支是固定的,这三个分支的作用跟前面介绍的 Git Flow 也是一致的,在此基础之上,其他的基本上没有太多限制,比较自由。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45335

    浏览量

    663294
  • Git
    Git
    +关注

    关注

    0

    文章

    205

    浏览量

    16767
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    立讯精密荣获2025年上市公司可持续发展最佳实践案例

    11月18日,由中国上市公司协会(中上协)主办的2025上市公司可持续发展大会在北京隆重召开。会上,中上协发布了2025上市公司可持续发展最佳实践案例名单,从环境、社会和治理3个维度出发评优树典,立
    的头像 发表于 11-26 17:49 1447次阅读

    思瑞浦获评“2025年上市公司董事会最佳实践案例”

    喜讯11月18日,中国上市公司协会发布“2025年上市公司董事会最佳实践案例评选榜单”。思瑞浦凭借在董事会运作及董事会创新特色等方面的优秀表现,获评“2025年上市公司董事会最佳实践
    的头像 发表于 11-18 16:33 1007次阅读
    思瑞浦获评“2025年上市公司董事会<b class='flag-5'>最佳</b><b class='flag-5'>实践</b>案例”

    爱芯元智荣获2025金辑奖最佳技术实践应用奖

    2025年盖世汽车第七届“金辑奖”揭晓,爱芯元智凭借全球化辅助驾驶芯片M57系列荣获“最佳技术实践应用奖”。
    的头像 发表于 11-02 09:17 481次阅读

    安波福荣获2025年度最佳实践奖之产品领导力大奖

    近日,全球领先的增长咨询公司Frost & Sullivan在美国亚利桑那州举办2025年度最佳实践奖颁奖典礼。安波福PULSE雷达视觉一体感知系统凭借在全球汽车辅助泊车领域的卓越表现,荣获2025年度最佳
    的头像 发表于 10-30 15:02 1527次阅读

    达实智能荣获中国企业管理“十大最佳实践”奖

    10月17日,以“AI+管理:铸就新质生产力” 为主题的第十五届中国管理·全球论坛暨首届“中国企业管理最佳实践榜”发布盛典在山东青岛顺利举行。达实智能董事长刘磅作为中国管理模式50人+论坛核心成员
    的头像 发表于 10-20 17:53 1791次阅读

    华为携手AIS斩获FutureNet Asia 2025最佳网络AI解决方案奖

    FutureNet Asia 2025峰会期间,华为携手泰国领先电信运营商AIS凭借在网络智能化领域的创新实践,荣获“最佳网络AI解决方案奖”。继2023年荣获“亚太区域最佳运营商”、2024年摘得“
    的头像 发表于 10-14 15:02 592次阅读

    生产环境中Kubernetes容器安全的最佳实践

    随着容器化技术的快速发展,Kubernetes已成为企业级容器编排的首选平台。然而,在享受Kubernetes带来的便利性和可扩展性的同时,安全问题也日益凸显。本文将从运维工程师的角度,深入探讨生产环境中Kubernetes容器安全的最佳实践
    的头像 发表于 07-14 11:09 473次阅读

    Linux网络管理的关键技术和最佳实践

    在大型互联网企业中,Linux网络管理是运维工程师的核心技能之一。面对海量服务器、复杂网络拓扑、高并发流量,运维人员需要掌握从基础网络配置到高级网络优化的全套技术栈。本文将结合大厂实际场景,深入解析Linux网络管理的关键技术和最佳实践
    的头像 发表于 07-09 09:53 670次阅读

    VirtualLab Fusion应用:将光耦合入单模光纤的最佳工作距离

    光斑计算初始工作距离 在光线光学焦点距离处的光场评估 通过参数扫描确定最佳工作距离 在最佳距离处的场评估 工作流程步骤基础
    发表于 06-03 08:44

    天马荣获新财富杂志“2024 ESG最佳实践奖”

    天马可持续发展•ESG表现再获认可,上榜2024年新财富杂志最佳上市公司评选“ESG最佳实践榜单”。
    的头像 发表于 05-21 14:43 718次阅读

    DLP7000的光的入射角度是多少才是最佳的?

    有关DLP7000的光的入射角度是多少(垂直于芯片方向)才是最佳的?
    发表于 02-21 12:02

    BEM+Sass结合使用的最佳实践

    BEM(Block Element Modifier)与Sass的结合使用是前端开发中一种高效且规范的样式编写方式。以下是一些最佳实践,旨在帮助开发者更好地利用这两种工具来提高代码的可读性、可维护性
    的头像 发表于 02-12 16:50 949次阅读

    NX CAD软件:数字化工作流程解决方案(CAD工作流程)

    NXCAD——数字化工作流程解决方案(CAD工作流程)使用西门子领先的产品设计软件NXCAD加速执行基于工作流程的解决方案。我们在了解行业需求方面累积了多年的经验,并据此针对各个行业的具体需求提供
    的头像 发表于 02-06 18:15 739次阅读
    NX CAD软件:数字化<b class='flag-5'>工作流</b>程解决方案(CAD<b class='flag-5'>工作流</b>程)

    兆芯最佳实践应用场景解决方案发布

    《兆芯最佳实践应用场景解决方案》现已正式发布,扫描下方二维码或点击阅读原文即可获取下载。
    的头像 发表于 01-13 14:45 841次阅读

    AI工作流自动化是做什么的

    AI工作流自动化是指利用人工智能技术,对工作流程中的重复性、规则明确的任务进行自动化处理的过程。那么,AI工作流自动化是做什么的呢?接下来,AI部落小编为您分享。
    的头像 发表于 01-06 17:57 1409次阅读