目前很多项目都是通过 Git 进行管理的,Git 每次提交代码的过程中 提交说明 commit message 是必须的。但仅仅必须是不够的,好的提交说明可以帮助我们提高项目的整体质量。

作用与优点

提交说明最首要的目的是帮助 提交者 说明本次提交的目的,而规范的说明信息有几个好处。

  1. 提供完整的信息,帮忙快速定位问题
  2. 过滤某些 commit ,快速查找有用信息
  3. 直接从 commit 信息生成 Change log
  4. 加快 Code Review 的过程

基本要求

  • 第一行应该少于 50 个字。随后是一个空行
  • 永远不在 git commit 上增加 -m <msg> 或者 --message=<msg> 参数,而需要单独写提交信息

好的提交说明要包含下面的内容:

  1. 为什么要提交这次修改?
  2. 怎么解决的问题?
  3. 可能影响哪些内容?

Angular 规范 CommitMsg 格式

Angular 主要有三个格式,其中 Head 是必须的,bodyfooter 是可选的。

# head: <type>(<scope>): <subject>
# - type: feat, fix, docs, style, refactor, test, chore
# - scope: can be empty (eg. if the change is a global or difficult to assign to a single component)
# - 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 ticket, if any.
# - BREAKING CHANGE
#

Header

其中 type 用来说明 commit 的类别,只允许使用下面的 7 个标识。

  • feat 新功能
  • fix 修补 bug
  • docs 文档
  • style 格式
  • refactor 重构
  • test 增加测试
  • chore 构建过程、辅助工具
  • perf 提高性能

如果 typefeatfix ,则该 commit 信息将肯定出现在 change log 之中。

scope 用于说明 commit 影响的范围,比如影响哪一层、哪个包中的内容或者使用哪些方案的实例。

subject 是关于 commit 信息的简短描述,不超过 50 个字。

Body

Body 部分是针对本次 commit 的详细描述,可以多行,要表达清楚变动的动机、与之前行为的对比。

Footer

用于不兼容变动和关闭 Issue 。

使用 gitemoji 进行美化

虽然纯文字的提交说明已经非常明确了,但是却比较单调,而且在一些内容上感觉少了一些步骤,于是在现有的内容上进行少量的修改以更美观的清晰。

type 主要将原来的 chore 进行了拆分,增加了 cireview 两个内容,用来补充项目开发过程中的流程。其它的还有一些内容,可以参照 gitemoji

  • feat 新功能 :sparkles:
  • fix 修补 bug :bug:

    优化 Git Commit Message的更多相关文章

    1. 如何写好git commit message

      1.触发事件 我有这样一个版本库,里面包含两个学习用的练习项目:BookStore(以下简称BS)和PictureFriend(以下简称PF) 我在更改PF以后,未进行提交,同时又到BS中优化了一下文 ...

    2. git第四节----git commit message

      @git  commit message 什么是git commit message :git commit -m '每次提交时编辑的内容' git commit message的好处:      1 ...

    3. Git Commit Message 规范

      今天来说说团队开发中,对于 Git commit message 规范问题. 社区上有各种 Commit message 的规范,本文介绍 Angular 规范,目前使用较广,比较合理和系统化,并且有 ...

    4. 我是怎么写 Git Commit message 的?

      目录 作用 用的什么规范? type scope subject body footer 参考文章 用的什么辅助工具? 作用 编写格式化的 commit message 能够大大提高代码的维护效率. ...

    5. [软软软]技术博客-Commitizen优化git commit

      工具介绍 commitizen/cz-cli是一个规范git commit的工具,使用它代替git commit能够方便有效地写好提交的log,使得团队项目的版本信息更清晰. 安装 (全局安装) np ...

    6. Git commit message和工作流规范

      目的 统一团队Git commit日志标准,便于后续代码review,版本发布以及日志自动化生成等等. 统一团队的Git工作流,包括分支使用.tag规范.issue等 Git commit日志参考案例 ...

    7. [译]How to Write a Git Commit Message

      原文: http://chris.beams.io/posts/git-commit/ 介绍:为什么好的commit message很重要 你浏览项目commit message的时候或多或少会有些困 ...

    8. git使用总结(包含git commit message 和 changelog 工具的介绍)

      [git的配置] 1.配置用户名和邮箱: 分为全局配置和局部配置 --system 系统配置  --global 全局配置    --local 局部配置 Git读取时:优先从local>glo ...

    9. commitizen和cz-customizable配置git commit message

      起因 团队对提交的commit message格式有约定俗称的要求,但是没有一个统一的规范,导致大家提交的commit message或多或少不太一样.因此,需要一个工具来帮助大家统一commit m ...

    随机推荐

    1. 如何增强VR的vection/self-motion?

      上一节讲到了vection是给玩家带来“移动感”的因素,它提供良好VR体验的关键之一.那么VR中我们一般用哪些方式来提供vection呢?1 首先来简单了解一下人体和空间相关的感知机制. 视觉线索 v ...

    2. 浅拷贝&深拷贝的对比

      js中两种数据类型 浅拷贝:拷贝就是拷贝指向对象的指针,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,然而当内存销毁的 ...

    3. 关于SpringBoot 1.x和2.x版本差别

      有点小差别 基本上基于SpringBoot的代码不需要改动,但有些配置属性和配置类,可能要改动,改动原因是 配置和类的更新或者是改名一般正常的MVC,数据库访问这些都不需要改动,下面按照本书章节说明区 ...

    4. java中String转Date与Date转String

      public static void main(String[] args) throws ParseException { SimpleDateFormat simpleDateFormat = n ...

    5. c#关于JWT跨域身份验证解决方案

      学习程序,不是记代码,而是学习一种思想,以及对代码的理解和思考. JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.为了网络应用环境间传递声明而执行的一种基于JSON的开发标准 ...

    6. Web开发小贴士 -- 全面了解Cookie

      一.Cookie的出现 浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现. 针对上述 ...

    7. 【TencentOS tiny】深度源码分析(7)——事件

      引言 大家在裸机编程中很可能经常用到flag这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会if((xxx_flag)&&(xx ...

    8. SSH服务协议

      1.SSH介绍: SSH 是Secure Shell Protocol 的简写,由IETF网络小组(Network Working Group)制定:在进行数据传输之前,SSH先对联机数据包通过加密技 ...

    9. 算数运算符and数据类型转换

      一元(单目)运算符有且只有一个运算参数,二元(双目)运算符有且只有两个运算参数. 二元运算符:+(加).-(减).*(乘)./(求商).%(求余) 一元运算符:+(正),-(负),++(自增),--( ...

    10. Roadmap of FE

      未完待补充......