git commit 规范及自动化

文章目录

  • 规范描述
      • [header 格式](#header 格式)
        • [type 必填](#type 必填)
        • [scope 选填](#scope 选填)
        • subject
  • 项目配置
      • [1. 安装](#1. 安装)
      • [2. 配置文件](#2. 配置文件)
      • [3. 自动生成 Change Log](#3. 自动生成 Change Log)

规范描述

commit message需要包括两部分内容:header和body

  • header(推荐):简要描述此次commit的改动范围/内容
  • body(可选):若代码出现较大改变时填写

header 格式

header部分只有一行,包括三个字段:

复制代码
<type>(<scope>):<subject>
type 必填

说明commit类型,只允许使用以下标识

  • breaking:不兼容的改动,接口删除、数据库字段更新等,具体不兼容的部分用scope说明
  • feat:新功能(feature)
  • fix:修复bug
  • perf:优化(包括提升性能、体验)
  • refactor:重构(不是新增功能,也不是修改bug的代码改动)
  • docs:文档调整(documentation)
  • style:格式调整
  • test:测试调整(增加测试用例等)
  • chore:构建过程或辅助工具的变动
  • revert:回滚到某个版本
scope 选填

说明commit更改的文件名,多个用","分开

subject

commit简短描述

项目配置

1. 安装

python 复制代码
// 全局安装
npm install commitizen -g
// 项目目录下安装
npm i commitlint --save-dev
npm i @commitlint/config-conventional --save-dev
npm i husky --save-dev
npm install commitizen --save-dev
# 用于自动生成 change log
npm i conventional-changelog-cli --save-dev

2. 配置文件

在项目目录下,新建配置文件 commitlint.config.js

python 复制代码
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    // type 类型定义
    'type-enum': [2, 'always', [
      "feat", // 新功能 feature
      "fix", // 修复 bug
      "docs", // 文档注释
      "style", // 代码格式(不影响代码运行的变动)
      "refactor", // 重构(既不增加新功能,也不是修复bug)
      "perf", // 性能优化
      "test", // 增加测试
      "chore", // 构建过程或辅助工具的变动
      "revert", // 回退
      "build" // 打包
    ]],
    // subject 大小写不做校验
    // 自动部署的BUILD ROBOT的commit信息大写,以作区别
    'subject-case': [0]
  }
};

在项目目录下,新建配置文件 .cz-config.js

python 复制代码
'use strict';

module.exports = {
  types: [
    {value: 'feat',     name: 'feat:     新功能'},
    {value: 'fix',      name: 'fix:      修复'},
    {value: 'docs',     name: 'docs:     文档变更'},
    {value: 'style',    name: 'style:    代码格式(不影响代码运行的变动)'},
    {value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)'},
    {value: 'perf',     name: 'perf:     性能优化'},
    {value: 'test',     name: 'test:     增加测试'},
    {value: 'chore',    name: 'chore:    构建过程或辅助工具的变动'},
    {value: 'revert',   name: 'revert:   回退'},
    {value: 'build',    name: 'build:    打包'}
  ],
  // override the messages, defaults are as follows
  messages: {
    type: '请选择提交类型:',
    // scope: '请输入文件修改范围(可选):',
    // used if allowCustomScopes is true
    customScope: '请输入修改范围(可选):',
    subject: '请简要描述提交(必填):',
    body: '请输入详细描述(可选,待优化去除,跳过即可):',
    // breaking: 'List any BREAKING CHANGES (optional):\n',
    footer: '请输入要关闭的issue(待优化去除,跳过即可):',
    confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
  },
  allowCustomScopes: true,
  // allowBreakingChanges: ['feat', 'fix'],
  skipQuestions: ['body', 'footer'],
  // limit subject length, commitlint默认是72
  subjectLimit: 72
};

在package.json文件中增加相关配置

python 复制代码
{
  ...
  "scripts": {
    ...,
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
  },
  ...,
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-customizable"
    }
  }
}

3. 自动生成 Change Log

运行 npm run changelog

虽然只能生成简短的 commit 提交记录,但是已经提供了框架和基本 log

手动修改生成后的 log 文件即为项目 log

相关推荐
码农小白AI4 小时前
AI报告审核加速融入自动化实验室:IACheck破解智能设备时代报告管理新挑战
运维·人工智能·自动化
utf8mb4安全女神4 小时前
克隆的虚拟机怎么更改ip地址
运维
万能的知了5 小时前
服务器托管 vs 云主机 vs 裸金属:一个决策故事
运维·服务器·云计算
杨云龙UP6 小时前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
郑洁文6 小时前
基于网络爬虫的Web敏感信息泄露自动化检测工具
前端·爬虫·网络安全·自动化
luweis6 小时前
企智孪生 ETA(3.3 认知算法层:ETA 的思维内核 3.4 基础架构:算力与弹性)【浙江联保网络 卢伟舜】
大数据·运维·线性代数·ai·矩阵·学习方法
极客老王说Agent6 小时前
屏幕理解能力是下一代自动化的关键吗?2026年自动化范式演进深度解析
运维·人工智能·ai·chatgpt·自动化
LT10157974447 小时前
2026年电商RPA选型指南:电商运营全流程自动化测评
运维·自动化·rpa
Black蜡笔小新7 小时前
自动化AI算法训练服务器DLTM训推一体化平台助力农业生产管理实现安全智能化
人工智能·算法·自动化
JAVA社区8 小时前
Java高级全套教程(十一)—— Kubernetes 超详细企业级实战详解
java·运维·微服务·容器·面试·kubernetes