【精品】git commit 代码规范

news2025/1/31 11:06:09

规范

格式:

type(scope) : subject

  • type(必须) : commit 的类别,只允许使用下面几个标识:

    • feat : 新功能
    • fix : 修复bug
    • docs : 文档改变
    • style : 代码格式改变
    • refactor : 某个已有功能重构
    • perf : 性能优化
    • test : 增加测试
    • build : 改变了build工具 如 grunt换成了 npm
    • revert : 撤销上一次的 commit
    • chore : 构建过程或辅助工具的变动
  • scope(可选) : 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

  • subject(必须) : commit 的简短描述,不超过50个字符。

  • 优点:

    • 符合业内标准(许多项目使用 AngularJS 的commit 规范)
    • 提交过程更加规范(使用 commitizen 规范工具,风格统一)
    • 能够生成风格统一的 commit log(type(scope):subject)
  • 缺点:

    • 需要安装 commitizen 工具包,使项目更大、更重了(适合大型开源项目)
    • 提交过程受约束较大
    • 有一定的学习成本

commit规范

格式化规范工具 Commitizen

commitizen 是一个撰写合格 Commit message 的工具,可以利用 Commitizen,帮助我们撰写规范的提交信息。
安装 commitizen 和 cz-customizable,方法如下:

npm install -g commitizen@4.2.4
npm install -D cz-customizable@6.3.0 

在 package.json 中进行新增

"config": {
  "commitizen": {
    "path": "node_modules/cz-customizable"
  }
}

在根目录下新建 .cz-config.js 文件并写入配置

module.exports = {
  // 可选类型
  types: [
    { value: 'feat', name: 'feat:     新功能' },
    { value: 'fix', name: 'fix:      修复' },
    { value: 'docs', name: 'docs:     文档变更' },
    { value: 'style', name: 'style:    代码格式(不影响代码运行的变动)' },
    { value: 'refactor', name: 'refactor: 重构' },
    { value: 'perf', name: 'perf:     性能优化' },
    { value: 'test', name: 'test:     增加测试' },
    { value: 'chore', name: 'chore:    构建过程或辅助工具的变动' },
    { value: 'revert', name: 'revert:   回退' },
    { value: 'build', name: 'build:    打包' },
    { value: 'ci', name: 'ci:       与持续集成服务有关的改动' },
  ],
  // 消息步骤
  messages: {
    type: '请选择提交类型:',
    customScope: '请输入修改范围(可选):',
    subject: '请简要描述提交(必填):',
    body: '请输入详细描述(可选):',
    footer: '请输入要关闭的issue(可选):',
    confirmCommit: '确认使用以上信息提交?(y/n/e/h)',
  },
  // 跳过问题
  skipQuestions: ['footer'],
  // subject文字长度默认是72
  subjectLimit: 72,
}

之后就可以用 git cz 来代替 git commit了(先使用git add):
在这里插入图片描述
在这里插入图片描述

使用 Husky 强制规范

只是我们自己遵守规范是不够的,要让项目的所有开发者,都强制遵守此规范,可以通过 Commitlint 与 Husky 来实现:

首先安装

npm install -D @commitlint/config-conventional@12.1.4 @commitlint/cli@12.1.4   // 安装 commitlint/cli 与 commitlint/config-conventional
npm install -D husky@7.0.1 --save-dev //安装husky
npx husky install   //初始化husky

强制commit规范

在项目根目录添加 commitlint 的配置文件 commitlint.config.js ,并写入配置

module.exports = {
  // 继承的规则
  extends: ['@commitlint/config-conventional'],
  // 定义规则类型
  rules: {
    // type 类型定义,表示 git 提交的 type 必须在以下类型范围内
    'type-enum': [
      2,
      'always',
      [
        'feat', // 新功能 feature
        'fix', // 修复 bug
        'docs', // 文档注释
        'style', // 代码格式(不影响代码运行的变动)
        'refactor', // 重构(既不增加新功能,也不是修复bug)
        'perf', // 性能优化
        'test', // 增加测试
        'chore', // 构建过程或辅助工具的变动
        'revert', // 回退
        'build', // 打包
        'ci', // 与持续集成服务有关的改动
      ],
    ],
    // subject 大小写不做校验
    'subject-case': [0],
  },
} 

将 husky 与commitlint 进行关联,执行

npx husky add .husky/commit-msg

在生成的 commit-msg 文件中写入以下指令,替换undefined:

npx --no-install commitlint --edit

这样子就配置完成了,进行不符合规范的提交时,命令行就会报错;只有攥写符合规范的提交说明,才能成功提交,如下图所示:在这里插入图片描述

强制代码规范

创建配置文件

npx husky add .husky/pre-commit

在生成的 commit-msg 文件中写入以下指令,替换undefined:

npx lint-staged

在package.json的最后添加:

  "lint-staged": {
    "src/**/*.{js,vue}": [
      "eslint --fix",
      "git add"
    ]
  }

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

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

相关文章

6.2.2 【MySQL】InnoDB中的索引方案

上边之所以称为一个简易的索引方案,是因为我们为了在根据主键值进行查找时使用二分法快速定位具体的目录项而假设所有目录项都可以在物理存储器上连续存储,但是这样做有几个问题: InnoDB 是使用页来作为管理存储空间的基本单位,也…

未来3-5年,前端低代码化,具体往哪个方向发展更好就业?

最近发现一个有趣的现象,好像是要紧追AIGC的速度一样,我的朋友圈也是越来越多人每天抒发关于“前端开发新方向”的见解。 且其中不仅是关于AI的讨论,还把不少资深人士把低代码也拉出来溜了一圈,不仅是开发人员,产品经理…

构建企业分支网络

构建企业分支网络 目录 1.1 项目背景 1.2 项目拓扑 1.3 项目需求 1.4 设备选型 1.5 技术选型 1.6 地址规划 1.6.1 交换设备地址规划表 1.6.2 路由设备地址规划表 1.6.3 ISP设备地址规划表 1.6.4 终端地址规划表 1.6.4.1 VLAN 规划 1.7 VLAN 规划 1.8 项目实施 1.…

git撤回 不小心 commit 进去的文件

我时候 我们可能讲一下不想提交的文件 不小心commit了进去 我们可以通过 git reset HEAD~来撤回刚才的添加记录

iNeuOS工业互联网操作系统V5,视图建模(WEB组态)升级

针对工业来讲,特殊是流程行业,视图建模(Web组态)是必不可少应用场景,因为有很多工序要直观的展示工艺流程图。 对于一个工厂,少则几十张工艺流程图,多则上百张工艺流程图,还得支持灵…

被逼出来的自主可控,从华为自研看国产 IDE 的未来和商业模式

华为的自研 IDE 之路 我所在的部门“华为云 PaaS 服务产品部”在软件开发工具领域肩负着两大使命:一是为华为内部各产业开发者提供软件开发工具,提升开发效率;二是以华为云为承载平台,将华为内部优秀的软件工程工具和研发实践服务…

优维产品最佳实践:流水线的编排

前言:在前面的内容中,我们已经深入探讨了流水线的设计思路以及“一次构建多次部署”的核心概念。现在,让我们将这些理论知识付诸实践,在 EasyOps 平台上开始编排流水线。 本期优维EasyOps产品使用最佳实践,我们将为您…

视频监控平台EasyCVR分组批量绑定/取消通道功能的后端代码设计逻辑介绍

视频监控平台/视频存储/视频分析平台EasyCVR基于云边端一体化管理,可支持视频实时监控、云端录像、云存储、磁盘阵列存储、回放与检索、智能告警、平台级联等功能。安防监控平台在线下场景中应用广泛,包括智慧工地、智慧工厂、智慧校园、智慧社区等等。 …

真实软件测试案例测试报告编写规划

一、什么是测试报告? 测试报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件存在的质量问题提供依据,同时为软件验收和交付打下基础。 二、测试执行和结束的准则 1、测试执行的结束的原因 1&#xff…

正规好用的电脑端抽奖软件有哪些?

这几个软件都是本人反复用过、反复比较的,且都超过5年。 1. 518抽奖软件 518抽奖软件,518我要发,超好用的年会抽奖软件,简约设计风格。 包含文字号码抽奖、照片抽奖两种模式,支持姓名抽奖、号码抽奖、数字抽奖、照片抽…

珠宝行业如何进行有效的软文推广?媒介盒子告诉你

在当今时代,珠宝不仅是一种饰品,更是一种身份的象征,因此珠宝行业的竞争越来越激烈,为了让自己的品牌脱颖而出,珠宝企业需要进行有效的推广,而软文推广就是一种非常有效的方式。也有很多珠宝品牌来找盒子进…

svg 知识点总结

1. 引用 svg&#xff0c;直接用 img 标签 <img src"帐篷.svg" alt"露营">2. 画 svg 各种图形。 矩形 rect圆角矩形 rect圆圈 circle椭圆 ellipse线段 line折线 polyline多边形 polygon路径 path <svg width"200" height"250&qu…

C++初阶--类和对象(中)

目录 类的6个默认成员函数构造函数使用方法 析构函数使用方法 拷贝构造函数使用方法 赋值运算符重载赋值运算符重载 const成员 上篇末尾我们讲到了关于c实现栈相较于c语言在传递参数时的一些优化&#xff0c;但实际上&#xff0c;c在 初始化 清理 赋值 拷贝等方面也做了很大程…

照片太大怎么缩小kb?

照片太大怎么缩小kb&#xff1f;在日常使用电脑或手机时&#xff0c;我们经常会遇到照片过大而无法在聊天工具中传输的情况。这种情况非常常见且正常。当我们拍摄或保存的照片文件体积较大时&#xff0c;不仅会给传输带来困扰&#xff0c;还会占据宝贵的手机和电脑内存空间&…

Beyond Compare:文件夹和文件对比专家

在处理文件和文件夹时&#xff0c;我们有时需要比较两个文件或文件夹是否一致。在这个过程中&#xff0c;Beyond Compare 这款专业的文件夹和文件对比工具成为了我们的得力助手。下面&#xff0c;让我们一起来了解这款工具的基本使用说明。 一、Beyond Compare的下载与安装 首…

代理HTTP使用不当会出现哪些问题?如何正确使用代理服务?

代理HTTP是一种常见的网络代理方式&#xff0c;它为客户端和服务器之间提供中间层&#xff0c;转发上下游的请求和响应。正确使用代理HTTP可以提高采集效率、增加网络安全性、加速网络速度、保护用户隐私。但是&#xff0c;使用不当就难以达到预期的效果&#xff0c;在使用代理…

PYTHON 3.10中文版官方文档

大家好&#xff0c;我是涛哥。 很多问我涛哥学习Python看啥&#xff0c;一般我都会建议多看看官方文档&#xff0c;因为官方文档真的周到了&#xff0c;啥内容都有&#xff0c;比如新手安装&#xff0c;标准库&#xff0c; AIP参考手册&#xff0c;常见FAQ问题&#xff0c;太…

【jmeter+ant+jenkins】之搭建 接口自动化测试平台

平台搭建 (1). 录制jmeter脚本 (2). 将jmeter的安装目录下的G:\jmeter\apache-jmeter-5.1.1\extras中&#xff0c;将 ”ant-jmeter-1.1.1.jar”文件放到 ant的lib目录下 (3). 配置jmeter的xml配置文件&#xff0c;并放在ant目录的bin目录下&#xff0c;使用ant编译验证jmeter的…

CSwin-PNet: CNN-Swin-Vit 组合金字塔网络用于超声图像中乳腺病变分割

ATTransUNet 期刊分析摘要贡献方法整体框架1. Residual Swin Transformer block2. Interactive channel attention module3. Supplementary feature fusion module4. Boundary detection module 实验1. 消融实验2. 对比实验3. 失败案例讨论 可借鉴参考 期刊分析 期刊名&#x…

ROS1和ROS2的区别

ROS虽然将各个部分的各个组件给有机的连接起来&#xff0c;但是需要通过一个叫做Ros Master的东西&#xff0c;所有节点&#xff08;可以理解为某一个组件&#xff0c;比如&#xff1a;激光雷达&#xff09;的通信建立必须经过这个主节点&#xff0c;一旦Ros Master主节点挂掉后…