【推荐】git commit 规范和如何在 commit 里使用 emoji

前言

大家好,我是桃翁,今天给大家带来的是关于 git commit 那些事儿,希望大家喜欢。

对于规范 git commit message 我是分成了两种类型去看待。

  • 对于通用库、开源项目这类多人维护,而且极大可能别人会来看这份代码的,一定要规范,特别是对于开源项目,往往会要列 Change Log,规范好 commit 节省自己整理 log 的时间,也方便了用户。

  • 对于业务代码,特别是那种一个人维护的,其实不搞问题也不大,因为极小可能会有人来看你的 commit message。但是我依然还是建议规范一下,不然一旦后面想去看就会花费很多的力气,毕竟规范一下也不麻烦。

通过本篇文章你讲了解到三部分内容:

  1. 了解 git commit 规范

  2. 学到用工具 Commitizen 来规范 commit

  3. 学到如何在 commit message 里加上好看的 emoji

规范

现在主流的 commit message 规范就是 Angular 团队所用的准则,继而衍生了 Conventional Commits specification. 很多工具也是基于此规范。

每次提交,Commit message 都包括三个部分:header,body 和 footer,其中 header 有一个特殊的格式,包括了 type、scope、subject。


<type>(<scope>): <subject>

<BLANK LINE>

<body>

<BLANK LINE>

<footer>

其中 header 是必选的,但是 header 里的 scope 是可选的,另外提交的 message 长度不要超过 100 个字符,太长了不易阅读。

对于我个人来说,我觉得只要把 header 部分规范其实基本能满足绝大部分需要了,强制去规范 body 和 footer 对于团队的同学来说简直是折磨,所以我这里仅介绍 header 的几部分

type

type 指明 git commit 的类别,应该使用以下类型

  • 『feat』: 新增功能

  • 『fix』: 修复 bug

  • 『docs』: 仅仅修改了文档,比如 README, CHANGELOG等等

  • 『test』: 增加/修改测试用例,包括单元测试、集成测试等

  • 『style』: 修改了空行、缩进格式、引用包排序等等(不改变代码逻辑)

  • 『perf』: 优化相关内容,比如提升性能、体验、算法等

  • 『refactor』: 代码重构,「没有新功能或者bug修复」

  • 『chore』: 改变构建流程、或者增加依赖库、工具等

  • 『revert』: 回滚到上一个版本

  • 『merge』: 代码合并

这里面有些 angular 团队没有,自己可以自行增减

scope(可?。?/strong>

scope用于说明 commit 影响的范围,根据不同项目有不同层次描述。若没有特殊规定,也可以描述影响的哪些功能等。

subject

subject 是 commit 目的的简短描述,不超过50/80个字符,一般 git 提交的时候会有颜色提示。

  • 若英文用不惯,那么推荐使用中文

  • 若是开源代码,一律推荐统一英文,英文不行可以翻译软件用起来

  • 若是开源代码,可以再附加对应的issue地址

  • 结尾不加标点符号

工具:Commitizen

Commitizen是一个撰写合格 Commit message 的工具,(详细说明见 github 地址),用于代替 git commit 指令,而 cz-conventional-changelog 适配器提供 conventional-changelog 标准(约定式提交标准)?;诓煌枨?,也可以使用不同适配器。

1. 全局安装 commitizen cz-conventional-changelog


npm install -g commitizen cz-conventional-changelog

2. git cz 取代 git commit

安装完毕后,可直接使用 git cz 来取代 git commit。

image

可以看到当你 cz 之后,下面有很多的 type 让你选择,这就省掉了每次你去想应该用哪种 type,非常方便。

全局模式下,需要 ~/.czrc 配置文件, 为commitizen 指定 Adapter, 如果你不需要生成 Change Log 可以不用去处理。

只要用了 Commitizen ,就很方便的就规范的大家的 message 。

在 commit message 里用 emoji

在 git commit 上使用 emoji 提供了一种简单的方法,仅通过查看所使用的表情符号来确定提交的目的或意图, 得提交记录非常好理解,阅读体验非常棒。

image

使用方法

git commit 时直接在注释中写入表情符号的代码部分即可完成表情 emoji 的提交。

举个栗子:


$ git commit -m ':tada: init commit'

$ git commit -m 'added image to repo :art:'

如果你用 Commitizen,可能不太好把 emoji 放在最前面,因为咱们操作的空间,就在 git cz 后第三次交互提示,也就是在输入 header 的 subject 的时候填入,如果是这样,可以选择把表情放到最后。

效果展示:

image

如果你们团队是一个喜欢用 emoji 的团队,其实可以不用遵循上面的一节的规范,因为 emoji 已经可以表达出 header 的 type 的作用了,直接在 emoji 后面加描述即可。

emoji 表情库

emoji | emoji 代码 | commit 说明

:-------- | :-------- | :--------

:tada: (庆祝) | :tada: | 初次提交

:new: (全新) | :new: | 引入新功能

:bookmark: (书签) | :bookmark: | 发行/版本标签

:bug: (bug) | :bug: | 修复 bug

:ambulance: (急救车) | :ambulance: | 重要补丁

:globe_with_meridians: (地球) | :globe_with_meridians: | 国际化与本地化

:lipstick: (口红) | :lipstick: | 更新 UI 和样式文件

:clapper: (场记板) | :clapper: | 更新演示/示例

:rotating_light: (警车灯) | :rotating_light: | 移除 linter 警告

:wrench: (扳手) | :wrench: | 修改配置文件

:heavy_plus_sign: (加号) | :heavy_plus_sign: | 增加一个依赖

:heavy_minus_sign: (减号) | :heavy_minus_sign: | 减少一个依赖

:arrow_up: (上升箭头) | :arrow_up: | 升级依赖

:arrow_down: (下降箭头) | :arrow_down: | 降级依赖

:zap: (闪电)
:racehorse: (赛马) | :zap:
:racehorse: | 提升性能

:chart_with_upwards_trend: (上升趋势图) | :chart_with_upwards_trend: | 添加分析或跟踪代码

:rocket: (火箭) | :rocket: | 部署功能

:white_check_mark: (白色复选框) | :white_check_mark: | 增加测试

:memo: (备忘录)
:book: (书) | :memo:
:book: | 撰写文档

:hammer: (锤子) | :hammer: | 重大重构

:art: (调色板) | :art: | 改进代码结构/代码格式

:fire: (火焰) | :fire: | 移除代码或文件

:pencil2: (铅笔) | :pencil2: | 修复 typo

:construction: (施工) | :construction: | 工作进行中

:wastebasket: (垃圾桶) | :wastebasket: | 废弃或删除

:wheelchair: (轮椅) | :wheelchair: | 可访问性

:construction_worker: (工人) | :construction_worker: | 添加 CI 构建系统

:green_heart: (绿心) | :green_heart: | 修复 CI 构建问题

:lock: (锁) | :lock: | 修复安全问题

:whale: (鲸鱼) | :whale: | Docker 相关工作

:apple: (苹果) | :apple: | 修复 macOS 下的问题

:penguin: (企鹅) | :penguin: | 修复 Linux 下的问题

:checkered_flag: (旗帜) | :checkered_flag: | 修复 Windows 下的问题

:twisted_rightwards_arrows: (交叉箭头) | :twisted_rightwards_arrows:| 分支合并

如何在命令行中显示 emoji

默认情况下,在命令行中并不会显示出 emoji, 仅显示 emoji 代码。不过可以使用 emojify 使得在命令行也可显示 emoji, 它是一个 shell 脚本,安装与使用都很简单,在这里 查看更详细的如何安装与使用。

安装 emojify


$ sudo sh -c "curl https://raw.githubusercontent.com/mrowa44/emojify/master/emojify -o /usr/local/bin/emojify && chmod +x /usr/local/bin/emojify"

使用 emojify


$ emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?"

显示效果:

image

在使用 git bash 的时候,设置替换日志中的表情符号代码


$ git log --oneline --color | emojify | less -r

或者设置git log命令别名


$ alias gitlog='git log --oneline --color | emojify | less -r'

$ gitlog

效果如下:

image

是不是很好玩,快去试试吧!

参考资料

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容