Git Message 编写规范

为什么使用约定式提交

  • 自动化生成 CHANGELOG。
  • 基于提交的类型,自动决定语义化的版本变更。
  • 向同事传达变化的性质。
  • 触发构建和部署流程。
  • 让人们探索一个更加结构化的提交历史,以便降低对你的项目做出贡献的难度。

Git Message 编写指南

我们参考的是Angular 规范,同时也参考了约定式提交

概述

提交说明的结构如下所示:

<类型(Type)>[可选的作用域(Scope)]: <描述(Subject)>

[可选的正文(Body)]

[可选的脚注(Footer)]

类型 Type 说明

  • feat:新功能(feature)
  • fix:表示在代码库中修复了一个 bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动,空格,格式化,等等)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • perf: 性能 (提高代码性能的改变)
  • test:增加测试或者修改测试
  • build: 影响构建系统或外部依赖项的更改(maven,gradle,npm 等等)
  • ci: 对CI配置文件和脚本的更改
  • chore:对非 src 和 test 目录的修改
  • revert: Revert a commit

可选的作用域 Scope 说明

scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同

描述 Subject 说明

subject 是 commit 目的的简短描述,不超过50个字符

可选的正文 Body

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

需要注意

  • 使用第一人称现在时,比如使用change而不是changed或changes。
  • 应该说明代码变动的动机,以及与以前行为的对比

需要注意:

  • 以动词开头,使用第一人称现在时,比如change,而不是changed或changes
  • 第一个字母小写
  • 结尾不加句号(.)

Footer 部分只用于两种情况

  1. 不兼容变动: 如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法
  2. 关闭Issue 如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue 。也可以是多个issue。或者Jira 编号

工具使用

idea

安装插件: Git Commit Template Helper

vscode

安装插件: Git-commit-plugin For Vscode

示例

包含了描述以及正文内有破坏性变更的提交说明

fix(企业管理): 删除企业信息
因业务需要企业信息彻底删除,不做逻辑删除处理
BREAKING CHANGE: 之前是逻辑删除,现在是彻底删除,权限要严格控制

包含了可选的 ! 字符以提醒注意破坏性变更的提交说明

chore!: 更新mybatis-plus版本

BREAKING CHANGE: 新版的连表查询优化策略与旧版不同,注意连表查询相关代码

不包含正文的提交说明

docs: 更改基线负荷计算说明

包含作用域的提交说明

feat(邀约): 新增 供电公司登录可对对应企业邀约
end

评论