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

相关推荐
wzl202612136 小时前
从精细化运营视角,基于企销宝实现企微私域提速增效的技术实践
人工智能·自动化·企业微信
宵时待雨6 小时前
linux笔记归纳5:进程控制
linux·运维·笔记
志栋智能6 小时前
超自动化巡检:实现精细化运维管理的基础
运维·服务器·网络·人工智能·自动化
TOSUN同星6 小时前
同星多工位自动化刷写台架,助力汽车电子高效量产与质量追溯
运维·自动化·汽车
志栋智能6 小时前
安全超自动化的投资回报率如何量化?
人工智能·安全·自动化
夏日听雨眠6 小时前
LInux(gcc处理器,库文件,动静态库)
linux·运维·服务器
xingfujie6 小时前
Ubuntu K8s 1.28 kubeadm 高可用集群部署实战
linux·运维·服务器·docker·kubernetes
OYangxf7 小时前
Git Conflict Resolution
大数据·git·elasticsearch
实心儿儿7 小时前
Linux —— 进程间通信 - 命名管道
linux·运维·服务器
高斯林.神犇7 小时前
Git全套流程
git