Git Commit 提交规范

news/2024/11/19 0:32:35/文章来源:https://www.cnblogs.com/touchTomorrow/p/18292096

背景

Git每次提交代码都需要写commit message,否则就不允许提交。一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作。但是在日常开发中,大家的commit message千奇百怪,中英文混合使用、fix bug等各种笼统的message司空见怪,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题,我们希望通过定制 git commit 规范,让规范更好的服务于质量,提高大家的研发效率。

规范建设

目前Angular规范是使用最广的写法,比较合理和系统化,并且有配套的工具(IDEA就有插件支持这种写法)。

commit message格式

Commit message 都包括三个部分:header,body 和 footer。

header 是必需的,body 和 footer 可以省略。

不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

type 更改类型(必须)

用于说明git commit的类别,只允许使用下面的标识。

  1. feat:新功能(feature)。

  2. fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。

    1. fix:产生diff并自动修复此问题。适合于一次提交直接修复问题

    2. to:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix

  3. docs:文档(documentation)。

  4. style:格式(不影响代码运行的变动)。

  5. refactor:重构(即不是新增功能,也不是修改bug的代码变动)。

  6. perf:优化相关,比如提升性能、体验。

  7. test:增加测试。

  8. build: 构建依赖更改

  9. ci: 更改 CI 配置文件或者脚本

  10. chore:更改构建流程、或者增加依赖库、工具等

  11. revert:回滚到上一个版本。

  12. merge:代码合并。

  13. sync:同步主线或分支的Bug。

scope 此次变更范围(可选)

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。如果你的修改影响了不止一个scope,你可以使用*代替。

scope 主要指的是代码的影响面。scope并没有要求强制,但团队可以按照自己的理解进行设计。通常由技术维度和业务维度两种划分方式。比如按照技术分为:controllerdtoservicedao等。但因为一个功能提交,会涉及到多个scope(都不喜欢非常细粒度的提交),所以按照技术维度分的情况比较少。

按照业务模块进行划分,也是比较不错的选择。比如分为userorder等划分,可以很容易看出是影响用户模块还是order模块

subject 简短描述(必须)

subject是commit目的的简短描述,不超过50个字符。技术文档的大标题、功能的概述

建议使用中文(感觉中国人用中文描述问题能更清楚一些)。

  • 结尾不加句号或其他标点符号。

  • 根据以上规范git commit message将是如下的格式:

fix(order): 修复了1分钱购买套餐的bug测试反馈可以1分钱买套餐,目前已经卖出了200单Closes #2677[skip ci]

body (可选)

body 详细描述

Body 部分是对本次 commit 的详细描述,可以分成多行。

  • 第2行是空行

  • 应该说明代码变动的动机,以及与以前行为的对比。

changes 重大变更(可选)

即不兼容修改,指的是本次提交修改了不兼容之前版本的API或者环境变量

所有不兼容修改都必须在页脚中作为中断更改块提到,以BREAKING CHANGE:开头,后跟一个空格或者两个换行符,其余的信息就是对此次修改的描述,修改的理由和修改注释

BREAKING CHANGE: isolate scope bindings definition has changed andthe inject option for the directive controller injection was removed.To migrate the code follow the example below:Before:。。。。。。After:。。。。。。The removed `inject` wasn't generaly useful for directives so there should be no code using it.

closes 关闭问题(可选)

如果本次提交目的是修改issue的话,需要在页脚引用该issue

以关键字Closes开头,比如

Closes #234

如果修改了多个bug,以逗号隔开

Closes #123, #245, #992

skipCi(可选)

CI 全称 Continuous Integration,名为持续集成,传统的 CI 含义指的是代码仓库只要有代码变更(或者说有人想推代码入库),就会自动执行预先设计好的检查、防护流程,运行一系列构建、测试、部署等流程,并最终告知每一步的运行结果,确保人提交上来的代码没有问题后,才有机会将新代码合并到主干分支,而主干分支无论何时都一定是正确可运行的高质量版本,可以随时交付客户使用。

skip CI选项,跳过 CI 。一般的 CI 工具,都可以设置提交代码时自动触发编译。但你可以告诉它忽略本次提交。这可能是因为你提前预判到了一些构建风险,或者就是不想编译。

Revert

还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert: 开头,后面跟着被撤销 Commit 的 Header。

revert: feat(pencil): add 'graphiteWidth' optionThis reverts commit 667ecc1654a317a13331b17617d973392f415f02.

规范 Git 提交信息工具

上面的内容比较多,记下来比较繁琐的,特别是有时候我们很难记住所有的 type 类型,IDEA 现在有一个插件,就是用来规范 git 提交模板的。

IDEA 的插件市场中安装 git commit message helper,直接搜索安装,然后重启 IDEA 即可。

VScode 可以安装插件 Git-commit-plugin For Vscode

案例:

点击提交后结果:

feat(dao): 加类加了xxxx
添加字段xxxx
删除xxxxBREAKING CHANGE: 添加xxxx2.0
删除xxx1.0Closes 1257[skip ci]

git commit 规范指南

Angular提交信息规范 - Git Guide

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

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

相关文章

docker-compose创建haproxy教程

本文主要讲解通过docker-compose创建haproxy并进行代理 一、haproxy简介HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应用于数据库、邮件服…

Pytorch实现基于MNIST的手写数字识别

本文目的在于训练一个模型,使其能对手写的数字图片进行分类识别,并不断优化使其准确度尽可能地提高 一、数据预处理 (1)运行时所需库 import numpy as np import torch import torchvision from torch import nn from torch.utils.data import DataLoader from t…

【proto】python根据proto文件构造message,并换为二进制

一、场景测试需要构造数据,而且存储的格式为grpc消息的二进制格式,所以必须要根据proto构造二进制二、构造方法 1、根据proto文件生成python格式的pb文件python3 -m grpc_tools.protoc -I. proto/upload_state.proto --python_out=. --grpc_python_out=. 2、检查文件生成 3…

electron 跨域/CSP问题

请求报错:Refused to connect to http://127.0.0.1:8000/get?name=kv-grpc because it violates the following Content Security Policy directive: "default-src self". Note that connect-src was not explicitly set, so default-src is used as a fallback 这…

松灵机器人scout mini小车 自主导航(2)——仿真指南

松灵机器人Scout mini小车仿真指南 之前介绍了如何通过CAN TO USB串口实现用键盘控制小车移动。但是一直用小车测试缺乏安全性。而松灵官方贴心的为我们准备了gazebo仿真环境,提供了完整的仿真支持库,本文将介绍如何上手使用仿真。 官方仓库地址:https://github.com/agilexr…

zabbix“专家坐诊”第245期问答

问题一 Q:vfs.dev.discovery拿的是哪里的文件,我看源码里面获取的是/proc/parttions里面的信息,但是我没有这个device,是怎么获取出来的?A:检查下系统内核版本或者agent程序版本,如果未定义KERNEL_2_4的情况下,读的是后面这个文件。 Q:这两个文件我都看过,也没有cdro…

【Python】Word文档操作

一、全文替换 不是创建word文档写入内容,而是基于现有的Word文档进行替换处理 使用run.text直接赋值修改发现样式会丢失,而网上大部分办法都是这么写的... 直到我看到这篇文章的评论:https://blog.csdn.net/qq_40222956/article/details/106098464 除了段落替换后,Word文档…

【ubuntu】安装go

一、官网 https://golang.google.cn/dl/ 选择稳定版本,点击下载二、安装步骤 1、解压2、移动目录sudo mv go /usr/local3、配置环境变量 vim ~/.bashrcexport PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/gocode创建gocode目录 vim ~/.profile 添加同样配置三、验证$ g…

2024迎新马拉松——字典

思路 这道题可以把每个单词正过来放在一个字典树里。 把每个单词反过来,给每个单词单独建立一个字典树。 而询问要求的就是前缀在正串的字典树上的那个节点为根的子树中,所有串的反串字典树合并之后的那个字典树上,后缀的那个节点所对应的子树当中有多少个串就是答案。 举个…

win11系统 连接共享打印机提示 0x0000709

windows11 用户在添加共享打印机的时候,遇到了系统错误提示:操作无法完成(错误0x0000709) 其他查考文章: https://baijiahao.baidu.com/s?id=1788757659395932042&wfr=spider&for=pc

24迎新马拉松——字典

思路 这道题我们可以把每个单词正过来放在一个字典树里。 而我们把每个单词反过来,给每个单词单独建立一个字典树。 而询问要求的就是前缀在正串的字典树上的那个节点为根的子树中,所有串的反串字典树合并之后的那个字典树上,后缀的那个节点所对应的子树当中有多少个串就是答…

香橙派5plus上跑云手机方案二 waydroid

前言 上篇文章香橙派5plus上跑云手机方案一 redroid(带硬件加速)说了怎么跑带GPU加速的redroid方案,这篇说下怎么在香橙派下使用Waydroid。 温馨提示 虽然能运行,但是体验下来只能用软件加速,无法使用GPU加速,所有会很卡。而且Waydroid还依赖于桌面环境wayland,要么插上显…