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

沐爸muba 2024-10-25 12:33:01 阅读 78

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

Git Commit 规范是什么?

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

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

<code>feat:新功能(feature)fix:修补bugdocs:文档(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,然后配置以下内容:

<code>#!/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}"code>

# 读取commit message文件的内容

COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")

# 使用正则表达式匹配commit message

if ! echo "$COMMIT_MSG" | grep -E -q "$COMMIT_MSG_PATTERN"; then

echo "-------------------------------------------------------------------"code>

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 规范可以培养开发同学良好的编码习惯,包括审慎地进行每次提交、注重代码的可读性和可维护性等。

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

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。