Git 是市面上最流行的版本控制工具,書寫良好的程式碼提交規範能大大提高程式碼維護的效率,日常開發中使用 git 提交程式碼要求一定要寫 git commit message,否則就無提交程式碼,很多公司對 git commit message 的格式沒有一個明確的規範,導致各個開發人員隨意填寫提交資訊、風格迥異,在專案中引入 git commit 規範已迫在眉睫
Angular 的程式碼提交規範
目前,社群中有很多 Commit message 的寫法規範,本文介紹 Angular規範
,這是目前使用比較廣的一種程式碼規範,並且在 IDE 中有配套的工具
在 Angular 的程式碼提交規範中,一條完整的提交資訊分為 header
、body
、footer
三部分,格式如下
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
複製程式碼
完整提交資訊示例
fix(使用者模組): 修復登入介面npe異常
原因:登入介面查詢不到使用者時報npe異常
解決方案:增加 if null 判斷,當使用者不存在時返回提示資訊,內容:使用者不存在
Fixes https://zentao.hxy.com/zentao/bug-view-123.html
複製程式碼
Header
常用的 git 客戶端工具,在檢視 git log 的時候,往往只會顯示 git commit message 第一行的內容,header 的作用就是規範第一行的內容,使我們在瀏覽 git log 的時候,能一眼就看出每次 commit 的內容
規範中將 header 分為 type
、scope
、subject
三部分,下面分別對這三部分進行講解
type
type
用於說明本次 commit 的型別,必須是以下列舉值:
feat
: 提交新功能,feature 的縮寫fix
: 修復bugdocs
: 文件改動style
: 不涉及程式碼邏輯的改動,如增加空格、程式碼格式化、增加分號等refactor
: 對原有程式碼進行重構,即不增加新功能,又不修復 bugperf
: 改進程式碼效能的修改,performance 的縮寫test
: 增加/修改現有測試用例chore
: 對構建過程、輔助工具或依賴庫的更改
scope
scope
指程式碼提交影響範圍,如 控制層
、業務層
、資料層
等,也可以按業務劃分,視專案不同而不同,當提交影響了多個範圍,可以使用 * 號代替,如果覺得不知道怎麼區分範圍,可以省略,因為 scope 是一個可選項
subject
subject
是 commit 目的的簡短說明,一般不超過 50 個字
完整的 header
示例如下
feat(使用者模組): 新增登入介面
複製程式碼
type=feat、scope=使用者模組、subject=新增登入介面
Body
body
是對本次提交的詳細描述,可以分成多行,下面是一個示例
1. 登入介面使用 md5 + 隨機鹽加密
2. 登入成功返回使用者資訊
複製程式碼
Footer
footer
部分只用於以下兩種情況:
- 噹噹前程式碼與上一個版本不相容時,用
BREAKING CHANGE:
開頭,後面跟著相容性變更資訊
BREAKING CHANGE: isolate scope bindings definition has changed.
To migrate the code follow the example below:
Before:
scope: {
myAttr: 'attribute',
}
After:
scope: {
myAttr: '@',
}
The removed `inject` wasn't generaly useful for directives so there should be no code using it.
複製程式碼
- 如果當前 commit 針對某個 issue,那麼可以在 Footer 部分關閉這個 issue,也可以關閉多個 issue。由於公司開發往往沒有 issue,所以我這裡根據具體情況將關閉 issue 改為 修復bug
Fixes https://zentao.hxy.com/zentao/bug-view-1209.html
// 關閉issue則為 CLose #123,#232
複製程式碼
Git Commit Template 外掛
Git Commit Template 外掛是 IDEA 提供的基於 Angular 程式碼提交規範的外掛,可以幫我們自動生成提交資訊模版
安裝
安裝很簡單,直接在 plugins 搜尋 Git Commit Template 安裝就可以了
使用
安裝完重啟 IDEA,在提交內碼表面就會多處如下的圖示
點選圖示會彈出一個提交資訊模板彈窗,只需要在彈窗填寫對應資訊就能幫我們自動生成 commit message,很是方便