如何校验 commit message 是否符合规范,这有四种方式

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注!

Git Commit 规范是什么?

Git Commit 规范常常参考 Angular 社区提交规范,该规范规定 message 的提交须符合一定的格式,即:<type>: <subject>,type 为 commit 类别,subject 为简短描述。注意:冒号后面有空格,结尾不加句号(.)

type 只允许使用下面7个标识:

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

 

校验 Commit Message 的四种方式

如何规定统一的 commit message 格式?以下有四种方式:

第一种:后台设置

后台设置后,每次执行 git push 推送代码时,如果 commit message 不符合规范,则会报错。

1.码云 Gitee 后台设置:

 

4371cacf526af6485589946ba6811a27.png

2.Gitlab 设置:

 

77bb66fc53db25e52cd1902f155290f1.png

第二种:手动修改.git中的hooks

将代码 clone 到本地后,将 .git/hooks 中的 commit-msg.sample 文件改为 commit-msg,然后配置以下内容:

#!/bin/sh
 
# 检查commit message是否符合规定的格式
 
# 提供commit-msg文件的路径作为参数
COMMIT_MSG_FILE=$1
 
# 定义commit message的正则表达式规则
COMMIT_MSG_PATTERN="^(feat|fix|docs|style|refactor|test|chore|ci)(\(.+\))?: .{1,100}"
 
# 读取commit message文件的内容
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
 
# 使用正则表达式匹配commit message
if ! echo "$COMMIT_MSG" | grep -E -q "$COMMIT_MSG_PATTERN"; then
  echo "-------------------------------------------------------------------"
  echo "提交失败!commit message 不符合规范,请修改后重试"
  echo "请遵循格式:^(feat|fix|docs|style|refactor|test|chore|ci)(\(.+\))?: .{1,100}"
  echo "-------------------------------------------------------------------"
  exit 1
fi
 
# 如果commit message符合规定的格式,脚本返回0作为成功的退出码
exit 0

当然,正则和错误提示可以自定义。注意:因为 commit-msg 文件并不会提交,所以这种方式只会影响你自己本地仓库。

 

第三种:husky 结合 git hooks

Git Hooks,即Git 钩子,每个钩子对应一个 Git 操作,比如git commit、git push。husky 是 git hooks 工具,用于在 Git 操作前自动运行脚本,比如代码格式化。这有助于保持代码风格的一致性,提高代码的质量和可维护性。

安装 husky

npm i husky -D

初始化 husky

npx husky-init

初始化后会在根目录下生成个一个 .husky 目录,目录下有个 pre-commit 文件,文件中的命令会在 git commit 时执行。

生成hook commit-msg

npx husky add .husky/commit-msg

提示:add 命令已被禁用,运行以上命令可能会提示“add command is DEPRECATED”。解决方法是,可以将 .husky/_ 目录中的 commit-msg 文件拷贝到 .husky 目录下,将第二种方法中的 commit-msg 配置拷贝并粘贴到 .husky/commit-msg 文件的最下方。

将第二种方法中的 commit-msg 配置拷贝并粘贴到 husky/commit-msg 文件的最下方。

到这里就完成了,就是这么简单。

 

4447e52dd283b9b92127671f1db1d67c.png

 

第四种:husky + commitlit

这种方式网上讲的很多,个人觉得过于复杂,可自行百度。

 

四种方式都告诉你了,赶快动手试试吧!Git Commit 具有的意义也要抽空看看哦,因为很有意义!

 

Git Commit 规范的意义

Git Commit 规范在软件开发中具有重要意义,主要体现在以下几个方面:

1.提高代码的可读性和可维护性

  • 清晰的提交信息:书写良好的 commit message 能够清晰地说明每次提交的目的和所做的更改,使其他开发同学更容易理解代码的历史和变更。
  • 一致的格式:通过规定统一的 commit message 格式,可以确保所有开发同学遵循相同的规范,从而保持代码库的一致性。

2.便于团队协作

  • 减少沟通成本:清晰的 commit 历史记录可以减少团队成员之间的沟通成本,因为大家都可以通过查看 commit message 来了解代码的变化情况。
  • 提高协作效率:当团队成员需要回溯或理解某个特定功能的实现时,规范的 commit message 能够提供有价值的线索和参考。

3.便于版本控制和问题追踪

  • 回溯和回滚:规范的 commit message 使得回溯和回滚变得更加容易,开发同学可以更快地找到特定的提交并恢复或撤销更改。
  • 问题追踪:在出现bug或问题时,规范的 commit message 可以帮助开发同学快速定位问题的引入点,从而更有效地进行修复。

4.支持自动化工具

  • Chnage Log 生成:格式化的 commit message 可以自动化输出 Change Log,帮助团队记录项目的版本更新和变更历史。
  • 版本发布:一些自动化工具(如代码生成、版本发布等)可以根据规范化地 commit 信息来执行特定操作,提高工作效率。

5.提升代码质量

  • 规范约束:通过引入 Git Commit 规范,可以约束开发同学的提交行为,减少随意性和不规范性,从而提升代码的整体质量。
  • 促进良好的编程习惯:遵循 Git Commit 规范可以培养开发同学良好的编码习惯,包括审慎地进行每次提交、注重代码的可读性和可维护性等。

好了,分享结束,谢谢点赞,下期再见。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐爸muba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值