前言

本文将介绍Git代码提交规范的重要性,详细讲解规范的制定和实施,以及如何通过规范化团队代码管理来提高开发效率和代码质量。

为什么要制定统一的代码提交规范

  • 方便其他人维护和阅读
  • 过滤某些commit,便于快速查找信息
  • 直接从commit生成CHANGELOG
  • 可读性好,清晰,不必深入看代码可了解当前commit的作呕用
  • 代码审查
  • 跟踪工程历史

业界通用的Git提交规范

  • Angular团队的规范

AngularJS 在 github上 的提交记录被业内许多人认可,逐渐被大家引用。

image-20220106165213529

规范

type(scope): subject
// 空一行
description
// 空一行
Breaking changes
// 空一行
Closes issues 

type(必须)

commit的类别,只允许使用下面几个标识:

  • feat:一个新的需求
  • fix:一个BUG修复
  • docs:文档修改
  • style:项目排版的调整,不会影响整体业务逻辑
  • refactor:某个已有功能的重构
  • perf:一个提升系统性能的修改
  • test:测试相关调整
  • build:修改了build工具
  • ci:修改了CI相关配置文件或脚本
  • chore:构建过程或辅助工具的变动
  • revert:回滚某个提交

scope(可选)

用于说明commit的影响范围,如某某模块等等,视情况调整

subject(必须)

本次提交的简短描述,一般不超过50个字符

description(可选)

一个较长的提交描述

breaking changes(可选)

一个破坏性的说明

Closes issues(可选)

提交用于关闭某一个需求

例子

feat(订单模块): 新增微信支付功能
feat(订单模块): 新增微信支付功能

通过微信支付xxx接入

工具OR模板

Idea

使用Git Commit Template插件

  1. 在Idea的插件市场搜索Git Commit Template,然后安装

    image-20220106171140413

  2. 在代码提交窗口使用插件

    image-20220106171220368

  3. 根据实际情况选择相应的类型,并填写提交描述

    image-20220106171251084

  4. 点击OK后,自动生成符合规范的提交信息

命令行提交

方式一:直接按格式手撸提交信息

git commit -m "fix: 修改空指针异常"

方式二:commitizen

前提:本机正确安装Nodejs环境并配置相关环境变量

https://www.runoob.com/nodejs/nodejs-install-setup.html

使用CMD或PowerShell执行命令行

  1. 全局安装commitizen

    npm install -g commitizen
    npm install -g cz-conventional-changelog
    

    验证安装结果

    npm ls -g -depth=0
    

    image-20220106174532665

  2. 在用户目录如C:\Users\chenruiying下新建.czrc文件,写入如下内容

    { "path": "cz-conventional-changelog" }
    
  3. 进入项目文件夹,执行下面的命令

    commitizen init cz-conventional-changelog --save --save-exact
    
  4. 使用git cz代替git commit提交代码

    image-20220106174003503

    image-20220106174023644

方式三:设置git commit模板

  1. 建立模板文件,在项目根目录新建.git_template文件

    type(scope): subject
    
  2. 设置模板

    git config commit.template .git_template // 当前项目
    git config --global commit.template .git_template
    
  3. 提交代码,使用git commit触发编辑

    image-20220106175419770

生成CHANGELOG

在项目根目录执行以下命令

安装工具

npm install -g conventional-changelog-cli

追加

不会覆盖以前的CHANGELOG,只会在CHANGELOG.md的头部加上自从上次发布以来的变动

conventional-changelog -p angular -i CHANGELOG.md -s

全量生成

conventional-changelog -p angular -i CHANGELOG.md -s -r 0 

效果

在项目查看CHANGELOG.md

image-20220106174435016

image-20220106174314259