首页 > 其他分享 >【前端】代码Git提交规范之限制非规范化提交信息

【前端】代码Git提交规范之限制非规范化提交信息

时间:2024-09-01 13:57:17浏览次数:12  
标签:Git -- git 提交 规范化 commit commitlint

需求背景

在我们目前的前端项目中,我们采用 git 作为版本控制工具。使用 git 管理项目意味着我们经常需要提交代码。当我们执行 git commit -m "描述信息" 命令时,我们被要求提供一个描述信息。现在使用约定式规范提交,和Commitizen简化提交流程,但是如果出现人就是不遵守规则该怎么办呢?

解决方案

为了确保团队成员遵循约定式提交规范,可以设置Git钩子(hook)来限制非规范化的提交。例如,可以创建一个pre-commit钩子,当检测到提交信息不符合规范时,阻止提交并提醒开发者使用git cz

Git hooks(git 钩子)就是指git 在执行某个事件之前或之后进行一些其他额外的操作。我们现在用到的只有两个:

Git Hook调用时机说明
pre-commitgit commit执行前 它不接受任何参数,并且在获取提交日志消息并进行提交之前被调用。脚本git commit以非零状态退出会导致命令在创建提交之前中止。可以用git commit --no-verify绕过
commit-msggit commit执行前 可用于将消息规范化为某种项目标准格式。 还可用于在检查消息文件后拒绝提交。可以用git commit --no-verify绕过

翻译成大白话就是:

  • commit-msg:可以用来规范化标准格式,并且可以按需指定是否要拒绝本次提交
  • pre-commit:会在提交前被调用,并且可以按需指定是否要拒绝本次提交

以下是如何实现这一目标的步骤:

1、安装Husky,Husky是一个流行的Git钩子工具,它可以帮助你在提交或推送代码之前运行自定义脚本:

npm install husky --save-dev

2、安装Commitlint,Commitlint是一个帮助检查Git提交信息是否符合约定的工具:

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

3、在项目根目录下创建或编辑commitlint.config.js文件,配置提交信息的规则,配置项内容可以参考:config-conventional 默认配置

module.exports = {
      extends: ['@commitlint/config-conventional'], // 继承的规则
      rules: { // 定义规则类型
        'type-enum': [ // type 类型定义,表示 git 提交的 type 必须在以下类型范围内
          2, // 当前验证的错误级别,2-表示错误级别的错误
          'always',
          [ // 泛型内容
            'feat', // 新功能 feature
            'fix', // 修复 bug
            'docs', // 文档注释
            'style', // 代码格式(不影响代码运行的变动)
            'refactor', // 重构(既不增加新功能,也不是修复bug)
            'perf', // 性能优化
            'test', // 增加测试
            'chore', // 构建过程或辅助工具的变动
            'revert', // 回退
            'build' // 打包
          ]
        ],
        'subject-case': [0] // subject 大小写不做校验
      }
    }

注意:确保保存为 UTF-8 的编码格式,否则可能会出现错误

4、启动 hooks , 生成 .husky 文件夹

npx husky install

image-20240302232607843.png

5、在 package.json 中添加 prepare 指令

npm pkg set scripts.prepare="husky install"

image-20240302234433586.png

6、执行 prepare 指令

npm run prepare

7、执行成功,提示

image-20240302233135127.png

8、在.husky目录下,编辑commit-msg钩子文件,使用Commitlint来检查提交信息。

#!/usr/bin/env sh
npx --no-install commitlint --edit "$1"

7、此时, 不符合规范的 commit 将不再可提交

image-20240303000527796.png
8、这不得扣几个工钱,让大家长长记性。确保团队成员了解这些新规则,并知道如何使用git cz来规范化提交信息。

标签:Git,--,git,提交,规范化,commit,commitlint
From: https://blog.csdn.net/weixin_43242942/article/details/141682849

相关文章

  • 【git教程】快速掌握git
    @目录1.本地版本控制1.1在一个目录下建立仓库gitinit1.1.1删除仓库1.2暂存区gitadd1.2.1保存到暂存区1.2.2撤销暂存区文件1.3提交与回退1.3.1提交到版本库gitcommit1.3.2回退gitreset1.4删除1.4.1删除未跟踪的文件gitclean1.4.2删除已跟踪的文件gitrm1.5检查1.......
  • tortoise小乌龟git管理工具的使用(以若伊为例)
    ■后端代码在本地修改后,必须先提交才能推送;对于多人开发的软件,后端的新增模块或功能因为是新的,和别人的没有冲突,都可以提交,但涉及到全局配置的yml文件,因为本地配置(比如数据库配置)和服务器配置可能不同,因此不能提交,不打勾即可。■提交后,通知其他人拉取最新的代码,否则2个人......
  • 可重复读隔离级别真的完全解决不可重复读问题了吗?读已提交隔离级别能避免不可重复读问
    一文带你搞懂MySQL事务的各个疑惑,不要再在脑子里一团浆糊啦!!事务的四大特性MySQL的三种日志事务的原子性是如何保证的?事务的隔离性是如何保证的?事务的持久性是如何保证的?数据库事务的隔离级别各隔离级别都各自解决了什么并发问题?什么是MVCC?读已提交和可重复读隔离级别实......
  • GitHub每日最火火火项目(8.31)
    项目名称:Cinnamon/kotaemon项目介绍:kotaemon是一个基于开源RAG(检索增强生成)的工具,主要用于与文档进行聊天。它允许用户与自己的文档进行交互,提出问题并获取相关的回答。通过利用RAG技术,该工具能够从文档中检索信息,并以自然语言的方式与用户进行对话,帮助用户更好地理解和......
  • GitHub每日最火火火项目(8.29)
    项目名称:goauthentik/authentik项目介绍:authentik是一个提供认证功能的工具,它就像是你在数字世界中的身份验证胶水,能够确保你的系统和应用的安全性。它可能具备强大的功能,能够满足各种复杂的认证需求,为用户提供可靠的身份验证体验。项目地址:https://github.com/goauthe......
  • Python股票接口实现查询账户,提交订单,自动交易(1)
    部分券商已经支持股票的API交易接入,大部分讲量化交易的文章都是讲用各种Python库取股票数据,和交易策略的回测,很少有讲到账户的查询和订单的提交与查询。基础介绍:其实取数据有各种方法,也都没什么门槛,有很多免费好用的第三方Python库,即时性和准确性不像券商官方的稳定可靠,实......
  • 轻松上手大模型应用开发——Git教程「亲自动手实践大型模型微调」,简化学习流程!
    LLM正逐步成为信息世界的新革命力量,其通过强大的自然语言理解、自然语言生成能力,为开发者提供了新的、更强大的应用开发选择。随着国内外井喷式的LLMAPI服务开放,如何基于LLMAPI快速、便捷地开发具备更强能力、集成LLM的应用,开始成为开发者的一项重要技能。目前,关......
  • gitee 项目与仓库的区别
    gitee项目与仓库的区别是什么,能否只用仓库不建立项目?在Gitee(以及其他基于Git的代码托管平台如GitHub)中,项目和仓库(Repository)之间存在一定的关联,但也有着明确的区别。项目与仓库的区别概念定义:项目:通常指的是一个更广泛的概念,它可能包含多个仓库、文档、讨论区、问题跟......
  • NGraphX v1.8.2发布,Bug修复及增加AiEditor接入示例并托管示例源码到Github
    本次更新包括了对启动脚本、认证流程、请求Url处理的优化,以及工作流API的改进。此外,我们还新增了AiEditor接入示例,让用户体验更直观、互动性更强。示例更新内容:启动脚本主机参数默认值修改:修改启动脚本中主机参数的默认值为127.0.0.1,以增强本地访问的安全性。如需开启......
  • 基于live555开发的多线程RTSPServer轻量级流媒体服务器EasyRTSPServer开源代码及其调
    EasyRTSPServer参考live555testProg中的testOnDemandRTSPServer示例程序,将一个live555testOnDemandRTSPServer封装在一个类中,例如,我们称为ClassEasyRTSPServer,在EasyRTSPServer_Create接口调用时,我们新建一个EasyRTSPServer对象,再通过调用EasyRTSPServer_Startup接口,将EasyRTSP......