搜索
您的当前位置:首页GitCommit标准化

GitCommit标准化

来源:乌哈旅游
GitCommit标准化

1 前⾔

Git Commit Message 应该清晰明了,要⽤精简的语⾔说明本次提交的⽬的,其主要作⽤是为了后续的搜索、版本的回滚、合并冲突的追溯等操作。

我们在开发时⼀直以来对 Git Commit 格式有个约定俗称的要求,所以就没落实明确的规范。因为没有明确的规范,就会导致提交的消息较为随意。甚⾄出现「“.”、”Update”」这样的消息。直到我在 GitHub 上发现了这条 时,才意识到提交信息也该规范起来。 以下图举例,当代码出现 Bug 时,应该回滚到哪个版本?回滚到 “朕与将军解战袍,芙蓉暖帐度春宵” 吗?

这条记录所变更的内容是啥,看概要我⼀概不知。 ︿( ̄︶ ̄)︿

为了解决规范问题,我参考了⼀些的开源项⽬,当发现 库时,才知道好多⼤型开源(、)项⽬早已使⽤了它。所以在接下来我会介绍⼀下 commitizen ⼯具所使⽤ Google AngularJS 规范。

2 规范介绍

这次主要介绍 AngularJS 的规范,它是由 Google 推出的⼀套提交消息规范标准,也是⽬前使⽤范围最⼴的规范。有⼀套合理的也较为;并且还有配套的⼯具可以供我们使⽤。

说⽩了,规范就是⽤⼯具进⾏强约束。单看规范⽐较简单,所以先让⼤家先看看⾯,知道他的⼤体规则后,在来讲细节。规范执⾏⽅案如下:  

既然有了⽅案,就会按照某些规则执⾏,以下是 Google AnguarJS 规范的要求:规范⽬标

- 允许通过脚本⽣成 CHANGELOG.md

- 可以通过范围的关键词,快速的搜索到指定版本

git log HEAD --grep feat(package.json) # 在package.json⽂件⾥新增的特性。

格式要求

():

- 消息只占⽤⼀⾏,任何⾏都不能超过 100 个字符- 允许使⽤ GitHub 以及各种 Git ⼯具阅读消息- 提交消息由页眉、正⽂和页脚组成,由空⾏分隔

代表某次提交的类型,⽐如是修复⼀个 bug 或是增加⼀个 feature,类型如下:类型 描述

范围可以是指定提交更改位置的任何内容,如:

- 对 package.json ⽂件新增依赖库,chore(package.json): 新增依赖库- 或对代码进⾏重构,refacto(weChat.vue): 重构微信进件

如果没有更合适的范围,可以直接写提交内容

Commit 实战

提交⼀条依赖库变更,type 为 chore(增加依赖库);等提交完成后,使⽤ Git ⼯具进⾏搜索。此时搜索类型是 chore(package.json),所以就能知道 package.json ⽂件所有的历史变更。

# 新增⼀条 Commit 记录

git commit -m 'chore(package.json): 新增 AngularJS 规范,Commit 时会⾃动调⽤钩⼦(GitHook)来判断 Message 是否有效'# 搜索跟 package.json ⽂件相关的历史记录git log HEAD --grep chore(package.json)

3 ⼯具介绍

因为是 Google AngularJS 的标准规范,所以提供了多种⼯具。如⽣成 CHANGELOG.md,提交⼯具,检查⼯具。

⼯具列表:

1. 提交⼯具 ,如果是初学者,可以使⽤ commitizen 帮助我们⽣成消息2. ⽣成 ,把 Git Commit Message 的消息⾃动⽣成 CHANGELOG.md3. Message ,是否有 “不符合” 规范的内容,可以在 GitHook 中使⽤

提交以及检查⼯具相对来说简单,⼤家⾃学即可,所以我以⽣成 CHANGELOG.md 举例。

# 安装 CHANGELOG ⽣成器yarn global add standard-version# ⽣成⽂档

standard-version --first-release

⽂档⽣成后,当前⽬录下就有 CHANGELOG.md ⽂件了,如果是 Node 项⽬,也会⾃动更新 package.json version 的版本号

这是根据 Git Commit Message 历史记录所⽣成的 CHANGELOG.md,在也不⽤⼿写了。( ̄▽ ̄)\"

4 参考链接commitizen

中⽂规范AngularJS 规范

因篇幅问题不能全部显示,请点此查看更多更全内容

Top