你還沒用過“約定式提交”嗎?那你趕緊來補補知識吧


前言

本文為介紹約定式提交,主要從以下幾點展開:

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

現狀分析

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

我們可以感受下:

真實項目commit記錄

可以對比看看同樣按照規范式提交的項目的commit記錄

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

其實已經越來越多的人開始意識到規范化提交的重要性,據我在公司實地采訪了一圈,前端團隊早已經開始約定式提交,這也可能是因為目前社區中主流的提交規范都是由Angular提交准則形成。

為了提高開發效率,減少在處理問題時耗費的時間,推薦大家在寫完代碼,提交時能夠使用以下規范:

  • 規范化提交(不一定是文中提到的方式,但無論哪種方式,要做到統一簡明)
  • 一處變更一次commit(謹防多處、多次修改堆積成一次commit提交,這對后期bug分析將是災難)

約定式提交

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

而且現在的很多自動生成changelog的工具,都是建立在約定式提交的基礎之上。

優點

  • 可讀性好,清晰,不必深入看代碼即可了解當前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查看




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM