You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# body: 72-character wrapped. This should answer:
# * Why was this change necessary?
# * How does it address the problem?
# * Are there any side effects?
# initial commit
# headr: <type>(<scope>): <subject>
# - type: feat, fix, docs, style, refactor, test, chore
# - scope: can be empty
# - subject: start with verb (such as 'change'), 50-character line
#
# body: 72-character wrapped. This should answer:
# * Why was this change necessary?
# * How does it address the problem?
# * Are there any side effects?
#
# footer:
# - Include a link to the issue.
# - BREAKING CHANGE
#
引言
在日常的开发工作中,我们通常使用 git 来管理代码,当我们对代码进行某项改动后,都可以通过 git commit 来对代码进行提交。
git 规定提交时必须要写提交信息,作为改动说明,保存在 commit 历史中,方便回溯。规范的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG,甚至对于项目的研发质量都有很大的提升。
但是在日常工作中,大多数同学对于 log 信息都是简单写写,没有很好的重视,这对于项目的管理和维护来说,无疑是不友好的。本篇文章主要是结合我自己的使用经验来和大家分享一下 git commit 的一些规范,让你的 log 不仅“好看”还“实用”。
为什么要规范 git commit
一直在说要规范 commit 格式,那为什么要这样做呢?
让我们先来看一个不太规范的 commit 记录:
看完什么感觉,写的是啥啊(内心 OS),这种 commit 信息对于想要从中获取有效信息的人来说无疑是一种致命的打击。
那我们来看一个社区里面比较流行的
Angular规范
的 commit 记录:看完是不是一目了然呢?
上图中这种规范的 commit 信息首先提供了更多的历史信息,方便快速浏览。其次,可以过滤某些 commit(比如文档改动),便于快速查找信息。
既然说到了
Angular 团队的规范
是目前社区比较流行的 commit 规范,那它具体是什么呢?下面让我们来具体深入了解下吧。Angular 团队的 commit 规范
它的 message 格式如下:
分别对应 Commit message 的三个部分:
Header
,Body
和Footer
。Header
Header 部分只有一行,包括三个字段:
type
(必需)、scope
(可选)和subject
(必需)。type
: 用于说明 commit 的类型。一般有以下几种:scope
: 用于说明 commit 影响的范围,比如: views, component, utils, test...subject
: commit 目的的简短描述Body
对本次 commit 修改内容的具体描述, 可以分为多行。如下所示:
Footer
一些备注, 通常是
BREAKING CHANGE
(当前代码与上一个版本不兼容) 或修复的 bug(关闭 Issue) 的链接。简单介绍完上面的规范,我们下面来说一下
commit.template
,也就是 git 提交信息模板。git 提交信息模板
如果你的团队对提交信息有格式要求,可以在系统上创建一个文件,并配置 git 把它作为默认的模板,这样可以更加容易地使提交信息遵循格式。
通过以下命令来配置提交信息模板:
新建
.gitmessage.txt
(模板文件) 内容可以如下:看完上面这些,你会不会像我一样感觉配置下来挺麻烦的,配置一个适合自己和团队使用的近乎完美的 commit 规范看来也不是一件容易的事情。不过社区也为我们提供了一些辅助工具来帮助进行提交,下面来简单介绍一下这些工具。
commitizen(cz-cli)
commitizen
是一款可以交互式建立提交信息的工具。它帮助我们从 type 开始一步步建立提交信息,具体效果如图所示:首先通过上下键控制指向你想要的 type 类型,分别对应有上面提到的
feat
、fix
、docs
、perf
等:然后会让你选择本次提交影响到的文件:
后面会让你分别写一个简短的和详细的提交描述:
BREAKING CHANGE
或者有关联已开启的issue
:看完上面的 commitizen 的整个流程,下面让我们来看下如何来安装。
全局环境下安装:
本地项目安装:
commitlint
commitlint
是一个提交验证工具。原理是可以在实际的 git commit 提交到远程仓库之前使用 git 钩子来验证信息。提交不符合规则的信息将会被阻止提交到远程仓库。先来看一下演示:
对于
Conventional Commits
规范,社区已经整理好了@commitlint/config-conventional
包,我们只需要安装并启用它就可以了。首先安装 commitlint 以及 conventional 规范:
接着在
package.json
中配置commitlint
脚本:为了可以在每次 commit 时执行 commitlint 来 检查我们输入的 message,我们还需要用到一个工具 ——
husky
。husky 是一个增强的
git hook
工具。可以在 git hook 的各个阶段执行我们在 package.json 中配置好的 npm script。首先安装 husky:
接着在
package.json
中配置commitmsg
脚本:到这里,
commitlint
就配置完成了~gitmoji-cli
平时与朋友聊天时,我们一定会用到表情包,比如。表情包的出现让我们与朋友之间的沟通变得更加有趣。如果能在 git 提交 commit 时用到表情包,岂不是使每次的 commit 能够更加直观,维护起来也更加方便。
gitmoji
就是可以实现这种功能的插件,先让我们来感受一下有没有感觉很 cool~~
其实
gitmoji
的使用是很简单的:我们来看一下官方的示例吧:
是不是跃跃欲试了呢?
gitmoji项目地址
gitmoji使用示例
看完本文,是不是感觉对于
git commit message
又有了新的认识呢?去在你的项目中运用这些吧,让你的commit更加规范的同时,也不要忘了给你的log加上emoji
哦!最后附上一个之前项目针对git commit配置的
package.json
,作为参考:最后
你可以关注我的同名公众号【前端森林】,这里我会定期发一些大前端相关的前沿文章和日常开发过程中的实战总结。当然,我也是开源社区的积极贡献者,github地址https://github.com/Jack-cool,欢迎star!!!
The text was updated successfully, but these errors were encountered: