别再乱写git commit了
B站|公众号:啥都会一点的研究生
写在前面
在很长的一段时间中,使用git commit都是随心所欲,log肥肠简洁,随着代码的迭代,当时有多偷懒,返过头查看git日志就有多懊悔,就和写代码不写doc string或写的很简单一样,将浪费无数时间重新浏览
其实,git commit格式是有约定的,以下对一些常用进行说明,一起看看吧
正文
提交commit的结构如下
<type>[optional scope]: <description>[optional body][optional footer(s)]
type
首先是type,必填项,能直观的向向各使用者传达进行了哪类型的更新,一般使用较多的为
fix:用于表明修复了代码库中的bugfeat:在代码库中新增了功能
此外,还有一些其他类型
perf:在不影响代码内部行为的情况下进行了优化,提升性能refactor:代码重构docs:只修改了文档类型的内容style:不影响代码含义的修改,如删除空格等test:测试用例的新增或修改build:项目构建或依赖进行更新revert:一种特殊情况,如果当前commit用于撤销以前的commit,则必须用该type,后面跟着被撤销commit的Header。ci:与 CI(持续集成服务)有关的改动,如GitLab CIchore:其他修改
很多人不知道的是这些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 configsBREAKING 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 6BREAKING CHANGE: use JavaScript features not available in Node 6.
- 提交没有正文的消息
docs: correct spelling of CHANGELOG
- 提交具有多段落body和多个footer的消息
fix: prevent racing of requestsIntroduce 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:,并且提交描述将用于描述破坏性更改
以上就是本期的全部内容,期待点赞在看,我是啥都生,下次再见
相关文章:
别再乱写git commit了
B站|公众号:啥都会一点的研究生 写在前面 在很长的一段时间中,使用git commit都是随心所欲,log肥肠简洁,随着代码的迭代,当时有多偷懒,返过头查看git日志就有多懊悔,就和写代码不写doc string…...
八大排序(一)冒泡排序,选择排序,插入排序,希尔排序
一、冒泡排序 冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮…...
泊松分布简要介绍
泊松分布是一种常见的离散概率分布,它用于描述某个时间段或区域内随机事件发生的次数。它得名于法国数学家西蒙丹尼泊松。 泊松分布的概率质量函数表示某个时间段或区域内事件发生次数的概率。如果随机变量 X 服从泊松分布,记作 X ~ Poisson(λ)&#x…...
C语言每日一题(10):无人生还
文章主题:无人生还🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄…...
VSCode开发go手记
断点调试: 安装delve(windows): go get -u github.com/go-delve/delve/cmd/dlv 设置 launch.json 配置文件: ctrlshiftp 输入 Debug: Open launch.json 打开 launch.json 文件,如果第一次打开,会新建一…...
怎么选择AI伪原创工具-AI伪原创工具有哪些
在数字时代,创作和发布内容已经成为了一种不可或缺的活动。不论您是个人博主、企业家还是网站管理员,都会面临一个共同的挑战:如何在互联网上脱颖而出,吸引更多的读者和访客。而正是在这个背景下,AI伪原创工具逐渐崭露…...
【块状链表C++】文本编辑器(指针中 引用 的使用)
》》》算法竞赛 /*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在竞赛算法学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记:转载…...
echarts的Y轴设置为整数
场景:使用echarts,设置Y轴为整数。通过判断Y轴的数值为整数才显示即可 yAxis: [{name: ,type: value,min: 0, // 最小值// max: 200, // 最大值// splitNumber: 5, // 坐标轴的分割段数// interval: 100 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大…...
恢复删除文件?不得不掌握的4个方法!
“删除了的文件还可以恢复吗?有个文件我本来以为不重要了,就把它删除了,没想到现在还需要用到!这可怎么办?有没有办法找回来呢?” 重要的文件一旦丢失或误删可能都会对我们的工作和学习造成比较大的影响。怎…...
GitLab CI/CD:.gitlab-ci.yml 文件常用参数小结
文章目录 一、.gitlab-ci.yml 文件作用二、一个简单的.gitlab-ci.yml 文件示例参考 一、.gitlab-ci.yml 文件作用 可以定义跑CI时想要运行的命令或脚本 可以定义job之间的依赖和缓存 可以执行程序部署并定义部署位置 可以定义想要包含的其他配置文件和模版 二、一个简单的.gi…...
MySQL学习笔记9
MySQL数据表中的数据类型: 在考虑数据类型、长度、标度和精度时,一定要仔细地进行短期和长远的规划,另外,公司制度和希望用户用什么方式访问数据也是要考虑的因素。开发人员应该了解数据的本质,以及数据在数据库里是如…...
从零学习开发一个RISC-V操作系统(三)丨嵌入式操作系统开发的常用概念和工具
本篇文章的内容 一、嵌入式操作习系统开发的常用概念和工具1.1 本地编译和交叉编译1.2 调试器GDB(The GNU Project Debugger)1.3 QEMU模拟器1.4 项目构造工具Make 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记,计划从RISC…...
小米机型解锁bl 跳“168小时”限制 操作步骤分析
写到前面的安全提示 了解解锁bl后的风险: 解锁设备后将允许修改系统重要组件,并有可能在一定程度上导致设备受损;解锁后设备安全性将失去保证,易受恶意软件攻击,从而导致个人隐私数据泄露;解锁后部分对系…...
基础练习 回文数
问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式 按从小到大的顺序输出满足条件的四位十进制数。 solution1 #include <stdio.h> int main(){int n 1000, n1, n2, n3, n4;while(n &…...
解决Spring Boot 2.7.16 在服务器显示启动成功无法访问问题:从本地到服务器的部署坑
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
洛谷P5661:公交换乘 ← CSP-J 2019 复赛第2题
【题目来源】https://www.luogu.com.cn/problem/P5661https://www.acwing.com/problem/content/1164/【题目描述】 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 1.在搭乘一次地铁后可以获得一张优惠票&…...
mysql优化之索引
索引官方定义:索引是帮助mysql高效获取数据的数据结构。 索引的目的在于提高查询效率,可以类比字典。 可以简单理解为:排好序的快速查找数据结构 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这种数据…...
文件系统详解
目录 文件系统(1) 第一节文件系统的基本概念 一、文件系统的任务 二、文件的存储介质及存储方式 三、文件的分类 第二节 文件的逻辑结构和物理结构 一、文件的逻辑结构 二、文件的物理结构 文件系统(2) 第三节 文件目…...
有名管道及其应用
创建FIFO文件 1.通过命令: mkfifo 文件名 2.通过函数: mkfifo #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char *pathname, mode_t mode); 参数: -pathname:管道名称的路径 -mode:文件的权限&a…...
加州大学伯克利分校 计算机科学专业
加州大学伯克利分校 计算机科学专业 cs 61a cs 61b cs61c...
.NET 9边缘安全加固:如何用Minimal Hosting + Certificate Pinning + TPM2.0 attestation构建可信执行边界?
第一章:.NET 9边缘安全加固:Minimal Hosting Certificate Pinning TPM2.0 attestation构建可信执行边界 在边缘计算场景中,设备物理暴露、网络不可信及固件供应链风险显著提升了运行时攻击面。.NET 9通过Minimal Hosting模型精简启动路径&a…...
ARM内存操作指令实战:从LDR、STR到LDM、STM的嵌入式开发应用
1. ARM内存操作指令入门:从LDR/STR开始 第一次接触ARM汇编时,看到满屏的LDR和STR指令确实让人头大。但当我真正理解它们的作用后,才发现这些指令就像快递员一样,负责在寄存器和内存之间搬运数据。LDR(Load Register&am…...
银河麒麟V10 SP1安全基线配置踩坑记:为什么pam_wheel.so的group=wheel参数不生效?
银河麒麟V10 SP1安全基线配置实战:pam_wheel.so参数差异深度解析 第一次在银河麒麟V10 SP1服务器上配置安全基线时,我遇到了一个令人费解的问题。按照行业标准做法,我在/etc/pam.d/su文件中添加了auth required pam_wheel.so groupwheel配置&…...
3步释放20GB空间:DriverStore Explorer的系统驱动优化方案
3步释放20GB空间:DriverStore Explorer的系统驱动优化方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer(简称RAPR)是一款轻量…...
安卓手机免root玩转青龙面板:Alpine Term+Docker全流程指南(附SSH配置技巧)
安卓手机免root玩转青龙面板:Alpine TermDocker全流程指南(附SSH配置技巧) 在移动设备上搭建自动化工具链正成为技术爱好者的新趋势。想象一下,在通勤路上用手机就能管理定时任务、处理数据爬取或自动签到——这并非遥不可及的幻想…...
别再踩坑了!SQL Server数据类型那点事儿,看懂这篇少背三个锅蹬
从0构建WAV文件:读懂计算机文件的本质 虽然接触计算机有一段时间了,但是我的视野一直局限于一个较小的范围之内,往往只能看到于算法竞赛相关的内容,计算机各种文件在我看来十分复杂,认为构建他们并能达到目的是一件困难…...
解锁商场流量密码:一次地贴定制如何让我的活动效果翻倍?
在商场运营与活动营销中,流量获取与转化始终是核心痛点——高空广告成本高、受众触达不精准,传统海报易被忽略,线上引流又面临流量碎片化、转化链路长的困境。而商场地贴作为一种低成本、高触达、强引导的户外广告物料,往往被多数…...
如何动态调整dynamic-datasource数据源权重:负载均衡API调用终极指南
如何动态调整dynamic-datasource数据源权重:负载均衡API调用终极指南 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-datasou…...
Facenet-Pytorch人脸识别实战指南:5步快速构建精准人脸识别系统
Facenet-Pytorch人脸识别实战指南:5步快速构建精准人脸识别系统 【免费下载链接】facenet-pytorch Pretrained Pytorch face detection (MTCNN) and facial recognition (InceptionResnet) models 项目地址: https://gitcode.com/gh_mirrors/fa/facenet-pytorch …...
GDB调试利器:gdb-stl-views解析STL容器内部数据
1. 为什么需要gdb-stl-views 调试C程序时,STL容器是我们最常打交道的对象之一。但当你用GDB的print命令查看一个std::vector时,看到的可能是一堆让人头晕的内部实现细节,比如_M_impl、_M_start这类晦涩的成员变量。这就像你想看一本书的目录&…...
