Git教学篇4-如何写出完美的commit message?

前言

在之前的一篇文章《 》中,我们有讲过git status和git diff相关的内容。

今天这篇文章我们看看commit message相关的内容。

Git教学篇4-如何写出完美的commit message?

git

概述

在我们使用git commit -m命令提交信息时,在-m参数后面跟的字符串就是commit message,本质上是可以没有任何格式的。

但是为了团队协作,为了更好的代码管理和错误排查,我们需要给提交信息设置一定的格式,表明本次提交的目的。

下图是一个正确的commit message格式。

Git教学篇4-如何写出完美的commit message?

正确的commit message

格式化填写commit message有以下几个明显的好处。

  • 提供更多可查询的信息,用于浏览和排查问题

我们都知道git log是用于查看提交历史的,当我们需要很明显的看到提交信息时,可以使用如下命令。

git log --pretty=oneline

Git教学篇4-如何写出完美的commit message?

查看git log

  • 过滤重要的内容

在众多提交中,如果我们只对其中某些commit感兴趣,比如fix bug的提交,那么我们可以通过以下命令去查看。

git log --pretty=oneline --grep fix

Git教学篇4-如何写出完美的commit message?

过滤特定的git log

  • 可以生成change log

什么是change log呢?

在很多github仓库的README中,都会有一部分表示版本更迭的内容,这些就是change log。

如果我们在提交信息时都遵循了commit message规则的是,可以直接通过命令行去生成change log,而不用自己手写这个文件。

我们可以看看vue的官方change log的一部分,下图是v2.5.10版本更新时发布的change log,主要解决一些bug,同时提供源码下载。

Git教学篇4-如何写出完美的commit message?

Vue的change log

commit messag的格式

标准的commit message是包含Header,Body和Footer三个部分。但是一般不会去填写这么多信息。

作为正常开发的话,只需要使用Header部分即可,Body和Footer部分我们就不做阐述。

Header的内容主要分为三个部分,包括type,scope和subject。

  • type

type主要是用于说明提交的类型,目前常用的是下面7个。

  1. feat:新增加的功能(feature),比如组件库中新增一个组件。

  2. fix:修复bug,最常见的是解决QA提出的bug。

  3. docs:文档(documentation),比如对项目README文件的修改。

  4. style: 格式(代码空行,缩进等格式化,不影响代码运行的变动)。

  5. refactor:重构(即不是新增功能,也不是修改bug的代码变动)。

  6. test:增加测试,一般用于增加单元测试。

  7. chore:构建过程或辅助工具的变动,一般是项目版本的变更。

如果我们提交的类型为feat或者fix,则在生成change log时,会自动的追加到change log中;其他类型则是根据指令选择要不要添加至change log中,建议是不要。

  • scope

scope用于表示此次提交的影响范围,根据项目而定。如果是业务项目的话,一般会是业务模块名;如果是基础库类型的项目,一般会是某个底层基础的内容。

  • subject

subject用于简要描述此次提交的内容,一般不超过50个字符。

那么一个Header完整内容可以展示如下。

Git教学篇4-如何写出完美的commit message?

完整的Header内容

commitizen

如果有的时候我们会忘记commit message格式的话,可以通过一个工具来帮助我们实现,这个工具就是commitizen。

使用的方法也很简单,这里给大家介绍下。

  • 安装

通过npm安装commitizen包,如果只需要在当前仓库使用默认安装就可以了,如果需要全局使用则加上-g选项,这里我们只对当前仓库使用。

npm install commitizen

  • 初始化配置

在项目仓库下运行以下命令,支持Angular的Commit Message格式。

Git教学篇4-如何写出完美的commit message?

cz的初始化

  • 运行

当配置完成后,对于以后需要git commit的地方都采用git cz来代替。

需要注意的一点是如果暂存区里没有修改的文件,直接去运行git cz会报错抛出异常,错误信息显示:没有添加进暂存区的文件。

Git教学篇4-如何写出完美的commit message?

git cz报错

如果按照正常的流程,git add后,再去运行git cz,则会出现如下提示选项。

Git教学篇4-如何写出完美的commit message?

git cz正确使用

我们一般只需要选择前三项,分别对应Header的style,scope和subject三个部分。

后面的两个部分不用填写,直接按回车就行了。这时一条完整的Commit Message就生成了。

我们可以通过git log去查看刚刚生成的Commit Message。

结束语

今天这篇文章主要讲解的是commit message相关的内容,只有在大家开发的时候提供了标准的commit message,才能更有助于团队协同开发和排查问题。


分享到:


相關文章: