Git 开发规范

目录
  • Git 开发规范
    • 分支管理策略
      • git flow
      • github flow
      • gitlab flow
      • trunk-based development
      • 总结
    • Commit Message

Git 开发规范

分支管理策略

git flow

img

Vincent Driessen 于2010年提出的分支模型,可以说是最早、最全面的分支管理策略了,后续出现的分支管理策略基本都是基于 git flow 进行修改的。这里先要明确几个基本概念

  1. master/main:主分支,最终所有需要发布的有效代码都会合并到该分支
  2. develop:开发分支,所有开发内容都是基于 develop 分支创建 feature 分支
  3. feature:特性分支,也就是每个版本开发要写的代码
  4. release:发布分支,当需要发布版本时,develop 不能直接合并到 master 分支,需要通过 release 分支进行必要测试验证后,再将 relase 分别合并到 master 和 develop 分支。
  5. hotfix:热修复分支,线上出了紧急 bug,需要专门分支处理

从上图可以看出,使用 git flow 开发步骤还是比较多的:

  1. 从 develop 创建一个 feature 分支
  2. 开发并自测完 feature 分支,将其合并到 develop 分支
  3. 从 develop 分支创建 release 分支,进行集成测试
  4. 将 release 分支合并到 master 和 develop 分支

github flow

省略去了大部分分支类型,仅保留了 master 和 feature 分支。

暂时无法在飞书文档外展示此内容

gitlab flow

引入了生产分支和环境分支,总体上与 github flow 区别不大。

环境分支很好理解,即不同环境使用不同的环境分支。

生产分支则类似于 release 分支,但是是从 master 拉取出来,用来代表生产部署的代码版本。

trunk-based development

img

与 github flow 差别很大,认为应该在 master(主干)上开发,使用 release 分支进行发布,理由是短期的开发任务不需要整的那么麻烦,测试什么的在提交到 master 之前做好就行了。

基本上就等同于单分支开发了,用的比较少。

总结

其实分支模型大差不差,git flow 最全面, github flow 最简化。

基本上,你可以使用 git flow 满足任何开发团队的节奏,也可以在此基础上去掉一些自己不需要使用的分支。github flow 之所以能这么简单,主要是因为 feature 分支开发周期较长,且有健全的持续集成、持续部署工具保证 feature 分支合并到 master 后不会影响 master 的可用性,要求不可谓不高。

其实,总结下来,一个健全的开发团队的分支管理应该满足以下条件:

  1. 有一个永远有效、能反应生产部署代码的分支,可以随时发布
  2. 有一个能持续集成、体现开发进度的分支,能够帮助提早发现集成问题

Commit Message

很多开发的 git commit message 写的是一团糟,要么是流水账,要么货不对板。

commit message 没有绝对的好坏,但是有相对的优劣,一个团队要遵守一致的填写规范。一个好的 commit message 应该要尽可能简洁、保留关键信息。

我们可以先将 commit 分为几类:

  1. 代码重构:refactor
  2. 功能开发:feat
  3. 问题修复:fix
  4. 文件变更:doc
  5. ......

先用分类来概括提交内容,再用一段简短的文字来描述,如:

feat: 考试试卷CRUD

fix: 试卷完成功能失败问题

refactor: 使用令牌桶替换默认限流算法

....

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777962.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s工作负载控制器--DaemonSet

目录一、概述二、适用场景三、基本操作1、官网的DaemonSet资源清单2、字段解释3、编写DaemonSet资源清单4、基于yaml创建DaemonSet5、注意点5.1、必须字段5.2、DaemonSet 对象的名称5.3、.spec.selector 与 .spec.template.metadata.labels之间的关系6、查看DaemonSet6.1、查看…

【考研概率论】两个集合的交集与并集相等意味着什么?

今天要给大家分享的笔记是:《交集和并集相等的两个事件一定是相同的事件》:

实现一个终端文本编辑器来学习golang语言:第三章文本查看器part1

本章我们来完成文本编辑器的文件打开和查看功能,最后成品如上图。我们将分4步,逐渐完成本章所需功能。内容比较多,会分为两个部分,第一部分主要关注于“View视图”和“buffer及文本读取”。 如上图最终效果所示,我们希望在终端的最下方增加一个状态栏,能够展示当前被打开…

基于和声搜索算法(Harmony Search,HS)的机器设备工作最优调度方案求解matlab仿真

1.程序功能描述通过和声搜索算法(Harmony Search,HS)实现机器设备工作时间调度,使得多个机器进行并行工作,使得最终完成任务的时间达到最小。仿真结果输出工作调度甘特图以及和声搜索算法的适应度值收敛曲线。2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序…

从零体检一个魔塔社区模型(modelscope)最简单demo

从社区拿一个模型,比如以下这个链接 https://www.modelscope.cn/models/iic/cv_mobilenet-v2_bad-image-detecting 它的代码样例如下 from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks from modelscope.outputs import OutputKeysimg …

P2831 [NOIP2016 提高组] 愤怒的小鸟

讲解 P2831 [NOIP2016 提高组] 愤怒的小鸟。考虑状态压缩动态规划,需要根据两个点推出抛物线的解析式。思路: 考虑先求出经过 \((x_1,y_1),(x_2,y_2)\) 的抛物线解析式 我们有: \[\begin{cases} ax_1^2 + bx_1 = y_1 \\ ax_2^2 + bx_2 = y_2\end{cases} \]考虑将 \(b\) 消掉…

【EF Core】自动生成的字段值

自动生成字段值,咱们首先想到的是主键列(带 IDENTITY 的主键)。EF Core 默认的主键配置也是启用 Identity 自增长的,而且可以自动标识主键。前提是代表主键的实体属性名要符合以下规则: 1、名字叫 ID、id、或 Id,就是不分大小写; 2、名字由实体类名 + Id 构成。比如,Ca…

PowerBI_一分钟学会计算门店开业前3天销售金额_计算列及度量值方法

在某些特殊场景,我们往往需要去计算一些特定的组别的聚合数据 今天,就以计算门店开业前3天的销售情况,来学习一下,利用计算列和DAX度量值,两种快捷计算此类问题的方案。 一:XMIND二:示例数据 2.1 示例数据列说明为了方便验证和更清晰的检查结果,数据源只用了三列,分别…

雷达气象学(6)——径向速度图分析

目录6.1 速度场分析基础6.1.1 速度图分析的基本方法6.1.2 练习:整层为均匀西风6.1.3 练习:风向随高度顺转6.2 水平均匀风场的典型图像6.3 典型天气系统的判别6.3.1 锋面(切变线)系统6.3.1.1 冷锋(冷式切变线)6.3.1.2 暖锋(暖式切变线)6.3.2 逆风区6.3.3 中 \(\gamma\) …

wsl docker里运行ollama并使用nvidia gpu的一些记录

1、安装wsl2 具体过程网上一搜一把,这里就先略过了,只有wsl2能用哈 2、wsl里装docker,及相关配置 装dockerwget https://download.docker.com/linux/static/stable/aarch64/docker-23.0.6.tgz cd /mydata/tmp/ tar -zxvf docker-23.0.6.tgz mv docker/* /usr/bin/ mv dock…

程序员副业探索之电商

在腾讯广告工作期间,我主要负责小程序电商与广告业务,见证了互联网电商行业的剧变,特别是众多电商公司纷纷拥抱私域流量,直播带货成为新风尚,广告投入也在持续增加。通过这些经历,我积累了不少关于互联网电商的经验,并萌生了尝试电商副业的想法。 在小红书上,女装博主们…

mysql 为什么很多互联网公司选择了读可提交

前言 在默认环境下,mysql 是可重复读,为什么默认可重复读呢? 一般情况下感觉读可提交就行,可重复读解决幻读的问题,但是大多情况下没有幻读的问题,所以也没有必要可重复读。 那么为什么mysql 要把默认配置设置为可重复读呢? 正文 历史原因:这种图,如果是在可提交读的情…