目前很多项目都是通过 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. Python sys.setdefaultencoding('utf-8') 后就没输出

      为了解决Python的 UnicodeDecodeError: 'ascii' codec can't decode byte ,我们可以加入以下代码. import sys reload(sys) ...

    2. Vue躬行记(1)——数据绑定

      Vue.js的核心是通过基于HTML的模板语法声明式地将数据绑定到DOM结构中,即通过模板将数据显示在页面上,如下所示. <div id="container">{{c ...

    3. 【maven的使用】2使用maven与pom文件

      一.使用maven:首先需要知道的是,在我们开发人员中有一句话叫做:约定优于配置.比如,如果我们写代码有多种可选方案:硬编码形式:obj.setPath("d:/xxxx") .配 ...

    4. Python爬虫零基础入门(系列)

      一.前言上一篇演示了如何使用requests模块向网站发送http请求,获取到网页的HTML数据.这篇来演示如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据. update ...

    5. 基于Docker和Golang搭建Web服务器

      1 场景描述 基于centos7的docker镜像搭建golang开发环境 在docker容器内,使用golang实现一个Web服务器 启动docker容器,并在容器内启动Web服务器 我购买了一个最 ...

    6. .Net Core Serverless初体验

      什么是Serverless Serverless 是一个当今软件世界中比较新的话题.它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断 ...

    7. 网络游戏开发-客户端2(自定义websocket协议格式)

      Egret官方提供了一个Websocket的库,可以让我们方便的和服务器长连接交互. 标题写的时候自定义websocket的协议格式.解释一下,不是说我们去动websocket本身的东西,我们是在we ...

    8. java之ThreadLocal详解

      一.ThreadLocal简介 ThreadLocal是线程的局部变量,是每一个线程所单独持有的,其他线程不能对其进行访问,通常是类中的private static字段. 我们知道有时候一个对象的变量 ...

    9. C# 获取pdf长宽,反推pdf图纸类型

      业务需求:读取pdf每页的长宽,然后根据国际标准,反推出pdf图纸类型 第一步:下载类库,并引入到项目中 链接:https://pan.baidu.com/s/1ud4-xhfDvi9OKolEBPw ...

    10. Scanner接收字符

      char num = input.next().charAt(0); //截取指定位置的字符,下标从0开始 System.out.println("helloworld".char ...