通常情况下,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作。但是在日常开发中,大家的commit message都比较随意,中英文混合使用的情况有时候很常见,这就导致后续代码维护成本比较大。
基于这些问题,可以通过husky和commitlint来规范commit的格式,来减小代码维护成本。

Angular规范是目前使用最广的写法,比较合理和系统化,并且有配套的工具(VSCode插件git-commit-plugin就非常好用)

commit message介绍

commit message格式

<type>(<scope>): <subject>

type(必须)

用于说明 commit 的类别,只允许使用下面7个标识。

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

scope(可选)

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

subject

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

注意事项:

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

安装到项目

husky

  1. 安装 husky npm install husky --save-dev

  2. 初始化 husky npx husky install

  3. 设置项目 install 自动初始化 husky ,在 package.json 添加脚本

    // package.json
    {
    "scripts": {
    "prepare": "husky install"
    }
    }

hook

新增 hook 勾子命令,项目中使用 commit-msg 勾子来校验 commit message 是否符合规范: npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"

运行上面命令后,将自动在 .husky  文件夹下面新增对应的勾子文件,如下

如果运行完新增勾子函数如果出现如下消息

可以先执行 npx husky add .husky/commit-msg,然后手动去commit-msg文件里添加npx --no-install commitlint --edit $1

commitlint

  1. 安装 @commitlint/config-conventional @commitlint/cli

    npm install --save-dev @commitlint/config-conventional @commitlint/cli

  2. 新增配置文件 .commitlintrc.js

    module.exports = {
    extends: [
    '@commitlint/config-conventional'
    ]
    };

项目可以怎么规范Git commit ?的更多相关文章

  1. 规范git commit提交记录和版本发布记录

    在开发过程中我们一般都会用到git管理代码,在git commit提交代码时我们一般对git commit message随便写点简单的描述,可是随着项目参与人数的增多,发现提交的commit记录越来 ...

  2. 如何规范git commit提交

    相信很多人使用SVN.Git等版本控制工具时候都会觉得每次提交都要写一个注释有什么用啊?好麻烦,所以我每次都是随便写个数字就提交了,但是慢慢的我就发现了,如果项目长期维护或者修改很久之前的项目,没有一 ...

  3. 使用Gitmoji进行git commit的快速查阅指南

    目录 前言 1. 查阅方法:脚本法 1.1 利用 VS Code 编辑多行文本快速写脚本文件 1.2 给脚本添加可执行权限 1.3 修改环境变量 PATH 使脚本在所有路径下都可以执行(全局执行) 2 ...

  4. [软软软]技术博客-Commitizen优化git commit

    工具介绍 commitizen/cz-cli是一个规范git commit的工具,使用它代替git commit能够方便有效地写好提交的log,使得团队项目的版本信息更清晰. 安装 (全局安装) np ...

  5. git第四节----git commit message

    @git  commit message 什么是git commit message :git commit -m '每次提交时编辑的内容' git commit message的好处:      1 ...

  6. Git commit message和工作流规范

    目的 统一团队Git commit日志标准,便于后续代码review,版本发布以及日志自动化生成等等. 统一团队的Git工作流,包括分支使用.tag规范.issue等 Git commit日志参考案例 ...

  7. git commit的规范

    https://www.yuque.com/fe9/basic/nruxq8#6c228def 制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节.试想一下,如果查看主分支上 ...

  8. vue项目在git commit时,使用eslint检测

    用vue-cli3创建新项目可以自定义配置,选择eslint,所以eslint不需要配置, 项目根目录下面生成一个 .eslintrc.js文件,里面可以自定义配置eslint规则 现在在开发的时候, ...

  9. Git Commit 提交规范

    写好 Commit message 好处多多: 1.统一团队Git commit 日志风格 2.方便日后 Reviewing Code 3.帮助我们写好 Changelog 4.能很好的提升项目整体质 ...

随机推荐

  1. Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼

    Spring Cloud并不与Spring MVC类似是一个开源框架,而是一组解决问题的规范(个人理解).解决哪些问题呢?如下: 1)服务管理:⾃动注册与发现.状态监管 2)服务负载均衡 3)熔断 4 ...

  2. 图解python | 安装与环境设置

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  3. Vue2.0源码学习(6) - 组件注册

    组件注册 前言 在 Vue.js 中,除了它内置的组件如 keep-alive.component.transition.transition-group 等,其它用户自定义组件在使用前必须注册.在开 ...

  4. 树莓派GPIO开发(一):激光头传感器模块的使用

    配置环境 系统:Raspbian11(64位) 设备:树莓派CM4 一.写在前面 主要为了测试我捡漏买的CM4的拓展版 拓展板子没有焊接引脚,但是预留的接口 手动焊接一下 测试成功 ,说明我捡的这块板 ...

  5. 新手菜菜之2020Kubernetes详细介绍大全

    前文 Kubernetes笔记(一):十分钟布置一套K8s环境 介绍了怎么快速建立一个k8s体系.为了持续运用k8s来布置咱们的应用,需要先对k8s中的一些根本组件与概念有个了解. Kubernete ...

  6. k8s-ingress增加跨域问题

    第一种: kubectl get ingresses. -n rrzhibo-admin test-rrzb-apiadmin-gateway-http-ingress -o yaml apiVers ...

  7. 『德不孤』Pytest框架 — 8、Pytest断言

    目录 1.什么是断言 2.Pytest断言 3.Pytest的断言方式及应用场景 (1)使用assert语句 (2)断言预期的异常 (3)拓展 4.优化断言 5.使用标记检查异常 1.什么是断言 对于 ...

  8. jmeter实现sha256算法加密

    方法一:自带函数 参数含义 算法摘要:MD2.MD5.SHA-1.SHA-224.SHA-256.SHA-384.SHA-512 String to be hashed:要计算的字符串: Salt t ...

  9. 万能BI工具时代,聊天记录也能做数据分析?

    最近知乎上有个问题火了: 看了高赞的一些答案,最大的感受就是:婚前"泰国.新加坡.印度尼西亚"婚后"玩具.幼儿园.全部都是娃".作为一个适龄青年,也突然对自己结 ...

  10. Linux系统最重要的工具——Shell学习笔记

    一.为什么学习Shell脚本语言 1.Shell脚本语言是实现Linux/UNIX系统管理及自动化运维必备的重要工具,Linux/UNIX系统底层及 基础应用软件的核心大都涉及Shell脚本的内容. ...