Git 如何写出优雅的Commit Message

对于怎么写Git Commit 信息,每一个人都有本身的见解,每一个团队也有本身的规定。这并无一个明确的标准,今天也不是来讨论标准,而是介绍一个相对优雅的方式。css

[ac7536f1f] update some files
[cdc6708ad] change style [93d4b716d] remove css files [dfb928e85] update readme 复制代码

以前,我写提交信息的时候,只会写主题信息。可能这样写的弊端你们也看到了,以后会看这些message的时候,并不知道这些提交究竟是什么功能的。甚至有偷懒的同窗可能会直接这么写 [52a9e19] Update ,能看懂这个commit messageupdate什么吗?可能在过段时间,这位同窗也不知道是提交的什么了。java

对于Git Commit Message并明确的标准,但也有一些好的原则:webpack

  • 使提交信息业务相关
  • 提交信息中写明类型
  • 必要时要写描述(Decription)
  • 提交主题尽可能简短
  • 尽可能使用英文

使提交信息业务相关

本文开头的第一个代码片断是我以前提交的提交记录,如今来看的话,我已经不知道我写了什么?若是要知道到底提交了什么,涉及哪些功能,也只有借助版本工具了。git

提交信息和代码同样,不仅是给本身看,也是给团队中其余人看的,同时也是对提交信息的注释。在我过往经历中,看到过不少小伙伴为了方便随便写提交信息。修复一个登录问题,提交信息却只写了Fix bug。这就致使了对于代码的回溯和问题排查十分困难,时间久了甚至只能一个一个Commit的排查。要记住一点:提交信息不仅是给本身看的,也是给团队看的web

示例

使用编辑器

实现单点登录接口工具

替代

实现新功能测试

有个小建议,你们能够在提交代码的时候,若是实在是想不到,能够直接使用需求描述做为提交信息。flex

提交信息中写明类型

先来对提交代码的缘由进行分类,大体能够分为几类:新功能、代码升级或变动、Bug修复、文档编写、主题UI变动和测试用例。提交代码的缘由不外乎就是这几种,因此如今给这些缘由相应加上一个标识,就变成了以下列表。url

  • Feat: 新功能
  • Upgrade:功能升级或代码变动
  • Fix: Bug修复
  • Doc: 文档或README编写
  • Style: 主题UI变动
  • Test:新增测试代码

示例

使用

Feat:实现单点登录接口

替代

实现单点登录接口

提交信息尽可能简短

想象一下,若是一条提交信息有几十个甚至近百个字,是否是很累。做为一个能偷懒就偷懒的程序猿,固然不可能写这么长的提交信息的。只要在可以正确表达出本次提交所表明含义的状况下,字数尽可能少,最好不超过50个字符

示例

使用

Feat:实现单点登录接口

替代

实现单点登录接口,并修改了Login.java...(此处省略100字)

篇幅缘由,错误示例就用省略号(…)来代替。能够看到绿色示例已经正确可以表达本次提交的主题了,因此彻底没有必要写这么多字。

必要时要写描述(Decription)

描述是对提交信息的补充说明或详细描述,这部份内容不多有同窗会注意到。但有时候描述却也不可缺乏,好比说当合并代码存在冲突的时候,提交者就有必要将发生冲突的文件写在描述信息里面。

描述信息能够分为多行,能够在第72个字符的地方进行换行。

示例

使用

Upgrade: Update meta

  • update contributors
  • update eslint
  • update jest
  • update webpack

替代

Upgrade: Update meta

尽可能使用英文

有人会说中文本就是母语,为何不建议使用中文。在团队开发中,使用中文可以表达的更清楚明白。且一个团队里面,并非全部的人英文都很好,若是要使用英文则须要保证你写的提交信息其余人也能看懂,不然就会拔苗助长了。

你们或多或少都使用过Windows来进行开发,当使用过 cmd来查看git log的时候,中文是乱码的。这实在是太不友好,若是要正常显示还要一顿骚操做。这也就是为何建议尽可能使用英文了。

Cmd Git log 乱码
Cmd Git log 乱码

其实还有一个缘由,若是咱们写一个开源项目的话,提交到GitHub上面就是面向全世界的开发者,那么提交信息使用英文就十分友好了(说不定项目就火了呢)。

英文信息格式

若是要使用英文,那么就得注意一下提交的文本格式。英文的大小写和符号有无都会影响提交信息的美观。那咱们就要对英文格式作一些约束。

  • 语句的首字母使用大写字符
  • 语句结尾不要有句号(.)

示例

使用

Fix: Fix can't login bug

替代

Fix:修复不能登陆的bug

文章持续更新,扫描下方二维码关注公众号第一时间阅读

本文首发于: https://baozi.fun/2020/07/10/write-elegant-commit-message

本文使用 mdnice 排版