分享一套自用的git提交規范,可清晰的識別到關聯的任務/bug
一、提交信息的基本結構
推薦使用約定式提交的一種變體,結構如下:
<類型>(<范圍>): <主題> [#<禪道-ID>]<正文>(可選)<腳注>(可選)
一個完整的、優秀的示例:
feat(用戶模塊): 增加用戶手機號綁定功能 [#12345]- 新增手機號驗證接口(/api/user/bind_mobile)
- 用戶表增加 mobile 和 mobile_verified 字段
- 添加發送短信驗證碼的功能關聯禪道需求: http://your-zentao-domain/zentao/story-view-12345.html
二、核心組成部分詳解
1. 類型 (Type) - 必選
表示本次提交的意圖。以下是類型定義:
類型關鍵字 | 含義 | 適用場景 | 禪道關聯 |
---|---|---|---|
feat | 新功能 | 開發新的需求、功能 | 關聯 需求ID (如 #123 ) |
fix | 修復Bug | 修復測試提出的或已知的Bug | 關聯 BugID (如 #456 ) |
docs | 文檔更新 | 修改文檔(如README、接口文檔),不涉及代碼 | 可關聯需求/BugID,或無 |
style | 代碼樣式 | 調整代碼格式、縮進、分號等(不改變邏輯) | 通常無關聯 |
refactor | 代碼重構 | 重構代碼,既非修Bug也非加功能 | 可關聯需求ID(如性能優化需求) |
test | 測試相關 | 增加或修改測試用例 | 可關聯需求/BugID |
chore | 雜項事務 | 構建流程、依賴管理、工具腳本(如webpack配置) | 通常無關聯 |
2. 范圍 (Scope) - 可選
用括號括起來,說明提交影響的范圍。這有助于快速定位變更。
- 例如:
用戶模塊
、訂單模塊
、登錄頁
、API
、數據庫
等。 - 如果修改范圍很雜或難以概括,可以省略
(scope)
。
3. 主題 (Subject) - 必選
對本次提交的簡短描述,不超過50個字符。
- 要求:
- 使用祈使句、現在時態(如"增加",“修復”,“更新”,不要用"增加了",“修復了”)。
- 首字母不要大寫。
- 結尾不要加句號。
4. 禪道 ID - 強烈推薦
這是與禪道聯動的關鍵!使用 # + ID
的形式。
- 格式:
[#12345]
- 位置: 通常放在主題的末尾。
- 作用: 很多工具(如GitLab, Jenkins)可以自動解析這個格式,生成超鏈接。即使不能,也極其便于人工搜索。
5. 正文 (Body) - 可選
在主題之后空一行,編寫更詳細的說明。
- 寫什么:
- 提交的動機:為什么要這樣修改?
- 與之前行為的對比:修改了什么?是怎么實現的?
- 需要注意的** breaking changes **(不兼容的變動)。
- 格式: 每行不超過72字符,使用空格縮進的列表項會讓閱讀更清晰。
6. 腳注 (Footer) - 可選
通常用于放置不兼容的變動(以 BREAKING CHANGE:
開頭)或關閉Issue(如 Closes #123, #245
)。在你的場景下,可以放禪道需求的完整URL。
三、具體示例
示例1:完成一個需求
禪道需求: ID 為 10086,標題是“【用戶中心】需要支持修改頭像功能”
feat(用戶中心): 支持用戶上傳和裁剪頭像 [#10086]- 新增頭像上傳接口 POST /api/user/avatar
- 新增圖片裁剪組件(基于Cropper.js)
- 用戶表增加 avatar_url 字段存儲頭像地址See: http://zed.xxx.com/zentao/story-view-10086.html
示例2:修復一個Bug
禪道Bug: ID 為 50020,標題是“商品詳情頁加入購物車按鈕點擊無效”
fix(商品頁): 修復加入購物車按鈕點擊無效的問題 [#50020]修復了因事件綁定函數名錯誤導致點擊無效的問題,將 `addToCart` 更正為 `addToCart`。See: http://zed.xxx.com/zentao/bug-view-50020.html
示例3:處理多個任務(一次提交解決一個需求和一個Bug)
feat(訂單): 增加訂單導出為Excel的功能 [#10010]
fix(訂單): 修復導出列表時間顯示錯誤的問題 [#50015]- 新增 POI 依賴用于生成 Excel
- 修復時區轉換工具類的一個邏輯錯誤