git-commit标准化

git-commit标准化

Date
Sep 25, 2021
Tags
Git

Overview

日常工作中由于缺少对commit内容的约束,导致开发人员填写内容随意,质量参差不齐,可读性差且难以维护。 故引入 git commitizen来规划。

Quick Start

全局安装commitien & cz-conventional-changelog

Commitizen 是一个用来标准化commit-message的工具,可以完全代替git commit的使用。而cz-conventional-changelog 是约定提交标准的适配器。
npm install -g commitizen cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
安装完成后使用git cz 来代替git commit, 全局模式的安装必须把适配器配置写入~/.czrc

Usage

Commitizen-Message 格式, 一般包含三个部分: Header, Body, Footer
<type>(<scope>): <subject>
// blank line
<body>
// blank line
<footer>
Header 部分包含一行,有三个字段: type , scope, subject Footer 部分包含 beakchanges, affect issue

Type

type用于说明commit的类型
# 主要type
feat: 新功能
fix:  修复bug

# 次要type
docs: 文档
style: 格式(不影响代码运行变动)
build: 构建工具或外部依赖改动
refactor: 重构(非新增功能,也非bug修复的改动)

# 暂不使用type
test: 增加测试
chore: 构建过程的修改
perf: 提高性能的改动
ci: 与ci相关的改动

Scope

Scop用于说明本次commit的影响范围, 通常为项目名/模块名, eg. warehouse/config要是一次修改多个模块时,尽量拆分成多次commit分别提交,便于维护和CR

Subject

本次目的的较短说明,一般不超过50个字符 通常以动词开头, eg. 修改xxx模块,支持xxx功能

Body

针对本次改动的详细描述,描述改动之前的情况,改动动机等。 小修改不做要求,但是重大需求,更新影响范围很大时必须添加body说明

Break changes

不做强制性填写。  主要填写是否产生破坏性(与上一个版本不兼容)的行为, eg: 版本升级,接口参数减少,接口删除,接口迁移等。

Affect issue

用于指明是否关联某个问题(issue),  就可以使用 close #ISSUE_ID

Loading Comments...