跳至主要內容

Git - Commit 规范

Kamimika...大约 3 分钟GitGit规范笔记

规范化的 git 提交信息便于阅读和查找,本文介绍Angular 规范open in new window (谷歌文档)

规范化格式

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

注意

Header: 必需;Body, Footer: 可省略
每行不超过 72 或 100 字符以防自动换行

type: 提交的类型

type描述
feat新功能(feature)
fix修补 bug
docs文档(documentation)
style格式(不影响代码运行的变动)
refactor重构(即不是新增功能,也不是修改 bug 的代码变动)
test增加测试
chore构建过程或辅助工具的变动

注意

若类型为featfix,则必须出现在Change Log中,其它改动建议不放入Change Log

scope: 说明提交影响的范围

例如:数据层、控制层、视图层,$location, $browser, $compile, $rootScope, ngHref, ngClick, ngView
视项目不同而变化

提示

若修改影响不止一个scope,可使用*代替

subject: 改动目的的简短描述

要求:

  • 以动词开头,时态为第一人称现在时
  • 首字母小写
  • 不加句末标点

Body: 本次提交的详细描述

要求:

  • 注意第二行是空行
  • 以动词开头,时态为第一人称现在时
  • 应该说明变动的动机,以及与之前的对比

示例:

More detailed explanatory text, if necessary.  Wrap it to
about 72 characters or so.

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

只在两种情况下出现:

  • 不兼容变动:BREAKING CHANGE开头,内容为变动的描述、变动理由、迁移方法
  • 关闭 Issue:针对某个或多个 Issue,内容为Closes #issueId

示例:

BREAKING CHANGE: isolate scope bindings definition has changed.

    To migrate the code follow the example below:

    Before:

    scope: {
      myAttr: 'attribute',
    }

    After:

    scope: {
      myAttr: '@',
    }

    The removed `inject` wasn't generaly useful for directives so there should be no code using it.

特殊情况: Revert

当前 commit 用于撤销以前的 commit, 则必须以revert:开头,后面跟着被撤销 commit 的 <Header>

示例:

revert: feat(pencil): add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

规范化 commit 的优点

可以快速查找信息:如使用git log --grep [正则表达式]快速查看改动

规范化撰写工具:commitizenopen in new window

安装与配置

安装(全局)

pnpm
pnpm add -g commitizen

配置(在项目文件夹下)

pnpm
commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact

使用

czgit cz代替git commit即可

上次编辑于:
贡献者: wzh
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.4.1