目前很多项目都是通过 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. mybatis - 通用mapper

      title: 玩转spring-boot-mybatis date: 2019-03-11 19:36:57 type: "mybatis" categories: mybatis ...

    2. JAVA TCP/IP网络通讯编程(一)

      一个实例通过client端和server端通讯 客户端发送:“我是客户端,请多关照” 服务端回复:“收到来自于"+s.getInetAddress().getHostName()+" ...

    3. 函数的return和参数

      1.函数 将一些代码进行封装 def 函数名 括号 冒号:#创建 函数体(代码块) 函数名 + 小括号 #调用 1.1函数的返回值 return return 不写返回的是None,return写了不 ...

    4. spring源码分析系列2:Bean与BeanDefinition关系

      接口表示一种能力,实现了一个接口,即拥有一种能力. BeanDefinition与Bean的关系, 就好比类与对象的关系. 类在spring的数据结构就是BeanDefinition.根据BeanDe ...

    5. MongoDB 学习笔记之 $push,$each,$slice组合使用

      $push使用: 使用$push给数组添加2个新成员 db.ArrayTest.updateOne({ "name" : "Bill"},{$push: {&q ...

    6. 再探vue

      1. vue项目搭建 搭建vue环境需要安装node软件,node是由c++编写而成,主要运行js文件或者js代码的,安装node会自动安装一个管理器叫npm,建议换源下载,国外的网站较慢(比如cnp ...

    7. Springboot + Mysql8实现读写分离

      在实际的生产环境中,为了确保数据库的稳定性,我们一般会给数据库配置双机热备机制,这样在master数据库崩溃后,slave数据库可以立即切换成主数据库,通过主从复制的方式将数据从主库同步至从库,在业务 ...

    8. SpringBootSecurity学习(21)前后端分离版之OAuth2.0非对称加密

      JWT转换器 前面的例子中,都是在授权服务配置类中配置了一个很简单的jwt转换器,如下: 可以看到我们只用setSigningKey方法配置了一个秘钥,这里使用的是简单的对称加密的方式来加密jwt内容 ...

    9. Solidity 编程实例--Blind Auction 盲拍

      接下来扩展前面的公开拍卖成为一个盲拍.盲拍的特点是拍卖结束以前没有时间压力.在一个透明的计算平台上创建盲拍系统听起来可能有些矛盾,但是加密算法能让你脱离困境. During the bidding p ...

    10. Spring Boot WebFlux 增删改查完整实战 demo

      03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello .这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD ...