别再乱写git commit了

news2024/11/20 15:37:22

B站|公众号:啥都会一点的研究生

写在前面

在很长的一段时间中,使用git commit都是随心所欲,log肥肠简洁,随着代码的迭代,当时有多偷懒,返过头查看git日志就有多懊悔,就和写代码不写doc string或写的很简单一样,将浪费无数时间重新浏览

其实,git commit格式是有约定的,以下对一些常用进行说明,一起看看吧

正文

提交commit的结构如下

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]
type

首先是type,必填项能直观的向向各使用者传达进行了哪类型的更新,一般使用较多的为

  • fix:用于表明修复了代码库中的bug
  • feat:在代码库中新增了功能

此外,还有一些其他类型

  • perf:在不影响代码内部行为的情况下进行了优化,提升性能
  • refactor:代码重构
  • docs:只修改了文档类型的内容
  • style:不影响代码含义的修改,如删除空格等
  • test:测试用例的新增或修改
  • build:项目构建或依赖进行更新
  • revert:一种特殊情况,如果当前commit用于撤销以前的commit,则必须用该type,后面跟着被撤销commit的Header。
  • ci:与 CI(持续集成服务)有关的改动,如GitLab CI
  • chore:其他修改

很多人不知道的是这些type后可以搭配!用于向使用者表明本次更新较为重要,如feat!: <description>

scope

再是scope,选填,用于阐明本次commit 影响的范围,如与数据预处理相关、某模块功能相关等

description

必填,顾名思义就是对本次的提交做个简短概述

  • 以动词开头,使用现在时如fix,而不是fixed
  • 第一个字母小写
  • 结尾不加句号(.)
body

选填,详细描述本次的commit,一般小的修改在上面description即可描述清楚,而重大更新尽量把body写的详尽,可分行

footer

一般只涉及BREAKING CHANGE和ISSUE相关

  • BREAKING CHANGE:比如涉及重大变更则本部分为必填项,类似版本升级、接口变更等
  • ISSUE相关:如当前 commit 针对某个issue,可进行引用/关闭

以下参考www.conventionalcommits.org

例子

  • 带有description和 breaking change footer的commit
feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files
  • 使用!提交消息以引起对重大更改的注意
feat!: send an email to the customer when a product is shipped
  • 提交带有范围和!的消息
feat(api)!: send an email to the customer when a product is shipped
  • 提交带有!和BREAKING CHANGE footer的消息
chore!: drop support for Node 6

BREAKING CHANGE: use JavaScript features not available in Node 6.
  • 提交没有正文的消息
docs: correct spelling of CHANGELOG
  • 提交具有多段落body和多个footer的消息
fix: prevent racing of requests

Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.

Remove timeouts which were used to mitigate the racing issue but are
obsolete now.

Reviewed-by: Z
Refs: #123

约定规范

  • commit必须以type为前缀,类型由名词(例如feat表示新功能,fix表示修复等)组成,后面是可选的范围(scope),可选的感叹号(!),和必需的冒号(英文半角)和空格

  • commit后可以提供范围(scope),必须由括号括起的描述代码库部分的名词组成,例如fix(parser)

  • 冒号和类型/范围前缀之后必须立即跟着描述(description),描述是代码更改的简短摘要

  • 在简短描述之后,可以提供较长的正文(body)描述,提供有关代码更改的详细上下文信息。正文必须在description之后的一个空行处开始。

  • body是自由格式的,可以由任意数量的用换行符分隔的段落组成

  • 在正文结束的一个空行之后,可以编写一行或多行脚注(footer)。脚注必须包含关于提交的元信息,例如:关联的合并请求、ISSUE相关、重大变更,每条元信息一行

  • 破坏性变更必须标示在正文区域最开始处,或脚注区域中某一行的开始

  • 如果将破坏性变更写在脚注中,必须包含大写文本BREAKING CHANGE,后面紧跟冒号、空格和相关描述,例如BREAKING CHANGE: environment variables now take precedence over config files.

  • 如果破坏性变更写在正文,必须在冒号前加上!,如果使用!则可以从脚注部分省略BREAKING CHANGE: ,并且提交描述将用于描述破坏性更改

以上就是本期的全部内容,期待点赞在看,我是啥都生,下次再见

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Super Marker插件——标记资源,提高效率

插件介绍&#xff1a; 这是一款可以给资源添加颜色或图标标记&#x1f4cc;的插件&#xff0c;当资源文件比较多的时候&#xff0c;颜色标记可以让你一眼定位到要使用的资源&#xff0c;提高开发效率。 插件地址&#xff1a; Cocos商店&#xff1a;https://store.cocos.com/a…

工业蒸汽量预测(速通一)

工业蒸汽量预测&#xff08;一&#xff09; 赛题理解1、评估指标2、赛题模型3、解题思路 理论知识1、变量识别2、变量分析3、缺失值处理4、异常值处理5、变量转换6、新变量生成 数据探索1、导包2、读取数据3、查看数据4、可视化数据分布4.1箱型图4.2获取异常数据并画图4.3直方图…

【RabbitMQ实战】04 RabbitMQ的基本概念:Exchange,Queue,Channel等

一、简介 Message Queue的需求由来已久&#xff0c;80年代最早在金融交易中&#xff0c;高盛等公司采用Teknekron公司的产品&#xff0c;当时的Message queuing软件叫做&#xff1a;the information bus&#xff08;TIB&#xff09;。 TIB被电信和通讯公司采用&#xff0c;路透…

某度sign参数逆向

文章目录 前文分析完整代码结尾 前文 本文章中所有内容仅供学习交流&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 分析 经过我们几次抓包&#xff0c;测试&#xf…

单片机IAP固件升级分几步?(Qt上位机)

更新 0924&#xff0c;一些潜在的bug解决方案 前言 这周一直想做一个IAP固件升级的上位机&#xff0c;然后把升级流程全都搞懂。 我用的单片机型号是STM32F103VET6&#xff0c;FLASH容量是512K&#xff0c;FLASH单页是2K。 有纰漏请指出&#xff0c;转载请说明。 学习交流…

Rabbit消息的可靠性

Confirm模式简介 消息的confirm确认机制&#xff0c;是指生产者投递消息后&#xff0c;到达了消息服务器Broker里面的exchange交换机&#xff0c;则会给生产者一个应答&#xff0c;生产者接收到应答&#xff0c;用来确定这条消息是否正常的发送到Broker的exchange中&#xff…

黑马JVM总结(二十二)

&#xff08;1&#xff09;类的结构-field 成员变量信息 类字节码里的一些简单表示&#xff1a; &#xff08;2&#xff09;类文件结构-method-init &#xff08;3&#xff09;类文件结构-method-main &#xff08;4&#xff09;类文件结构-附加属性

Java基础(六)

前言&#xff1a;本篇博客学习Junit单元测试框架的使用以及常见的注解。 目录 单元测试 Junit单元测试框架 常见注解 单元测试 什么是单元测试&#xff1f; 针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其进行正确性测试。 Junit单元测试框…

十六、MySql的MVCC机制CONNECT(收官!)

文章目录 一、数据库并发的场景有三种&#xff1a;二、读-写&#xff08;一&#xff09;3个记录隐藏列字段&#xff08;二&#xff09;undo 日志&#xff08;三&#xff09;模拟 MVCC&#xff08;四&#xff09;一些思考&#xff08;五&#xff09;Read View 一、数据库并发的场…

interview6-jvm篇

JVM(Java Virtual Machine)Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 在JVM中共有四大部分&#xff0c;分别是ClassLoader&#xff08;类加载器&#xff09;、Runtime DataArea&#xff08;运行时数据区&#xff0c;内存分区&#xff09;、Execu…

整合车辆出险报告Api接口,轻松管理车险理赔!

随着车辆保有量的不断增加&#xff0c;车辆出险的情况也越来越普遍。对于车主来说&#xff0c;如何高效地管理车险理赔&#xff0c;处理保险事故是非常重要的。这时候我们就可以借助整合车辆出险报告API接口&#xff0c;实现快速定位理赔信息&#xff0c;轻松管理车险理赔。 一…

【C++面向对象侯捷】8.栈,堆和内存管理

文章目录 栈&#xff0c;堆stack object的生命周期static local object的生命周期global object的生命周期heap objects 的生命期new&#xff1a;先分配memory&#xff0c;再调用构造函数delete: 先调用析构函数&#xff0c;再释放 memory动态分配所得的内存块&#xff0c;in V…

VirtualBox解决VERR_SUPDRV_COMPONENT_NOT_FOUND错误

简述 最近使用VirtualBox时发现其增强功能不能用了&#xff0c;也就是不能双向拖拉文件&#xff0c;整了很久不知所以&#xff1b;看到有网友说跟新其VBoxGuestAdditions.ios文件&#xff0c;所以直接把我的VirtualBox从6.x升级到了7.x&#xff0c;然后就发生了眼前的一幕&…

040_小驰私房菜_MTK平台,添加camera客制化size

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 【问题背景:】mtk8195平台,录像需要添加一组自定义size 2560 * 1600。 添加一组自定义size,我们需要确认一…

数据湖在爱奇艺数据中台的应用

01 我们眼中的数据湖 作为爱奇艺的数据中台团队&#xff0c;我们的核心任务是管理和服务公司内的大量数据资产。在实施数据治理的过程中&#xff0c;我们不断吸收新的理念&#xff0c;引入尖端的工具&#xff0c;以精细化我们的数据体系管理。“数据湖”作为近年来数据领域广泛…

为您的SSH提提速

SSH是运维和开发人员接触比较多的工具&#xff0c;一般用SSH来连接远程服务器&#xff0c;这个是我的一些免费客户和企业客户经常使用的场景&#xff0c;当然SSH除了远程连接之外&#xff0c;还有很多额外的用途&#xff0c;比如SSH本身是具备代理功能的&#xff0c;我们也有一…

HarmonyOS开发:封装一个便捷的Log工具类

前言 日志打印&#xff0c;没什么好说的&#xff0c;系统已给我们提供&#xff0c;且调用也是非常的简单&#xff0c;我们封装的目的&#xff0c;一是扩展&#xff0c;打印一些不常见的类型&#xff0c;比如格式化json&#xff0c;使得日志看起来比较好看&#xff0c;二是&…

【Java 基础篇】Java Consumer 接口详解

在Java编程中&#xff0c;有时需要对某个对象进行操作或者处理&#xff0c;而这个操作可能是非常灵活的。Java 8引入了函数式编程的特性&#xff0c;其中的一个重要接口就是Consumer接口。本文将详细介绍Consumer接口&#xff0c;包括它的定义、用法以及示例。 什么是 Consume…

【Java 基础篇】Java Supplier 接口详解

在Java中&#xff0c;Supplier接口是一个重要的函数式接口&#xff0c;它属于java.util.function包&#xff0c;用于表示一个供应商&#xff0c;它不接受任何参数&#xff0c;但可以提供一个结果。Supplier通常用于延迟计算或生成值的场景。本文将详细介绍Supplier接口的用法以…

矩阵的c++实现

在大学数学课程《线性代数》中&#xff0c;就有矩阵和行列式的出现&#xff0c;这篇文章主要讲矩阵在c中的实现和一些用途&#xff08;目前我知道的&#xff09; 此篇文章只写c的内容&#xff0c;不具体写到数学中矩阵的一些公式、性质。 本篇文章中一部分图片来自百度百科。…