你還沒用過「約定式提交」嗎?那你趕忙來補補知識吧

前言

本文爲介紹約定式提交,主要從如下幾點展開:php

本文對應的github項目地址:https://github.com/larscheng/Conventional-Commits-Demo前端

現狀分析

目前咱們的項目在commit時基本上五花八門,各領風騷。雖然不如網上的那些惡搞commit記錄,可是這一現象嚴重影響咱們在閱讀記錄和查找bug緣由時的效率。java

咱們能夠感覺下:node

真實項目commit記錄

能夠對比看看一樣按照規範式提交的項目的commit記錄git

兩種commit message的對比很明顯說明了狀況,統一的提交信息,不只看起來舒服,並且讀起來更舒服github

其實已經愈來愈多的人開始意識到規範化提交的重要性,據我在公司實地採訪了一圈,前端團隊早已經開始約定式提交,這也多是由於目前社區中主流的提交規範都是由Angular提交準則造成。web

爲了提升開發效率,減小在處理問題時耗費的時間,推薦你們在寫完代碼,提交時可以使用如下規範:npm

  • 規範化提交(不必定是文中提到的方式,但不管哪一種方式,要作到統一簡明)
  • 一處變動一次commit(謹防多處、屢次修改堆積成一次commit提交,這對後期bug分析將是災難)

約定式提交

約定式提交:每次使用git commit 的時候都須要寫commit message,若是message的 style是按照固定的模版格式書寫,對於後期的維護和編寫changelog都有巨大的好處。json

並且如今的不少自動生成changelog的工具,都是創建在約定式提交的基礎之上。api

優勢

  • 可讀性好,清晰,沒必要深刻看代碼便可瞭解當前commit的做用。
  • 爲 Code Reviewing作準備
  • 方便跟蹤工程歷史
  • 讓其餘的開發者在運行 git blame 的時候想跪謝
  • 提升項目的總體質量,提升我的工程素質

約定式提交規範

約定式提交規範是基於Angular提交準則造成,提交說明的結構以下:

<類型>([可選的做用域]): <描述>
// 空一行
[可選的正文]
// 空一行
[可選的腳註]

其中,<類型>是爲了向類庫使用者代表其意圖,其可選值爲:

  • feat: 表示新增了一個功能
  • fix: 表示修復了一個 bug
  • docs: 表示只修改了文檔
  • style: 表示修改格式、書寫錯誤、空格等不影響代碼邏輯的操做
  • refactor: 表示修改的代碼不是新增功能也不是修改 bug,好比代碼重構
  • perf: 表示修改了提高性能的代碼
  • test: 表示修改了測試代碼
  • build: 表示修改了編譯配置文件
  • chore: 無 src 或 test 的操做
  • revert: 回滾操做

[可選的做用域]: 是爲了描述 這次 commit 影響的範圍,好比: route, component, utils, build, api, website, docs

<描述>: 這次提交的簡短描述

[可選的正文]: 這次提交的詳細描述,描述爲何修改,作了什麼樣的修改,以及開發的思路等等,輸入 \n 換行

[可選的頁腳]: 主要寫下面2種

  • Breaking changes: 在可選的正文或腳註的起始位置帶有 BREAKING CHANGE: 的提交,表示引入了破壞性變動(這和語義化版本中的 MAJOR 相對應)。
  • Closed issues: 羅列這次提交修復的 bug,如 fixes issue #110

Commitizen

Commitizen是一個撰寫合格 Commit message 的工具。

安裝

安裝命令以下:任選其一

$ npm install -g commitizen       (全局安裝)
$ npm install -d commitizen       (項目安裝)

而後,在項目目錄裏,運行下面的命令,使其支持 Angular 的 Commit message 格式。

$ commitizen init cz-conventional-changelog --save --save-exact

ps: 對於非Node項目(java、php...)在執行上一條命令前,須要手動建立package.json文件

$ npm init --yes

經過如上命令生成package.json文件基本格式以下:

{
  "name": "demo",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  }
}

之後,凡是用到git commit命令,一概改成使用git cz。這時,就會出現選項,用來生成符合格式的 Commit message。如圖:

git-cz

standard-version

若是你的全部 Commit 都符合 Angular 格式,那麼發佈新版本時, Change log 就能夠用腳本自動生成

standard-version就是生成 Change log 的工具

安裝使用

安裝命令以下:任選其一

$ npm i -g standard-version       (全局安裝)
$ npm i -S standard-version       (項目安裝)

生成CHANGELOG:

package.json中的script中 加入配置:

"scirpt":{"release":"standard-version"}

直接執行,便可生成CHANGELOG文件

$ npm run release

備註:

生成CHANGELOG的工具不少,conventional-changelog-cli也能夠用來生成CHANGELOG,安裝使用方法和standard-version相似

本項目的CHANGELOG生成實例:CHANGELOG查看


相關文章
相關標籤/搜索