【git 提交訊息格式】如何描述提交資訊 ? | 9 種標頭型態與結構說明
在團隊開發中,通常都會要求寫提交訊息,並且盡可能地「清楚明白」 添加提交版本的說明訊息,是為了之後回頭查看歷史,能更快、更精準地找到 我整合過去工作經驗中,使用過的提交訊息格式 會先從訊息格式的整體架構開始,說明各個部分的元素組成與代表含義 然後再依照 header、body、footer 的順序,介紹參數的分類與用途。
目錄
- 主體結構
- 標頭 (Header)
- 型態 (Type)
- 標題 (Subject)
- 主體 (Body) - 內容
- 頁腳 (Footer) - Issue Id
- 範本 (Sample)
主體結構 (Main Structure)
Tag | Description | Limit | Required |
---|---|---|---|
Header | Type : Subject | 50 words | required |
Body | Detail about commit content | 72 words per line | optional |
Footer | #issue_id | issue relation | required |
型態 (Type)
- init
- add
- fix
- adjust
- review
- del
- sync
- tmp
- merge
init
初始化
- 專案初始化
- 分支初始化
sample
init : JavaProjUtil
add
新增
- 新增類別
- 新增方法
- 新增參數
sample
add : DateTimeUtil
fix
修正 與原先規格實作預期不符合者
- 修正錯誤
- 修正設定
- 修正判斷
sample
fix : DateTimeUtil , formateDate()
adjust
調整 因原先規格更動而調整者
- 調整規格
- 調整參數
sample
adjust : CalTimeFactory , apartTime parameter
review
重構 不影響代碼運行的變動
- 重構類別
- 重構方法
- 重構參數
sample
review : NumberUtil
del
刪除 沒有特定 issue 的情況下,刪除未使用到的東西
- 刪除類別
- 刪除方法
- 刪除參數
sample
del : ParameterLogUtil
sync
同步遠端
- 同步非本人代碼
- 同步半成品代碼
sample
sync
sync : hncb develop branch
sync : QuickFastLogin Flow
tmp
暫存本地端
- 為了提交而提交,純粹上版控紀錄
- 除非特殊的理由,否則不建議使用
- 就算使用,也不推送到遠端數據庫
- 同步遠端數據,使用
sync
前綴詞
sample
tmp
tmp : online issue , checkout branch
merge
合併分支
- master 與 develop 專案同步
- 通常使用 sourcetree 或 git flow 預設的合併訊息
sample
merge : DateTimeUtil
標題 (Subject)
標題,50 個字以內,命名的越精確越好,概念上的範圍越小越好
- 程式風格 : 命名 -> 簡短 -> 微小
- 提交標題 : 清晰 -> 精確 -> 範圍
主體 (Body) - 內容
描述提交標題的細節, 通常以編號或符號條列內容清單(Markdown 格式), 若標題足夠說明清楚,可省略選填
Sample
add : DateTimeUtil
1. formatDate()
2. parseDate()
adjust : DateTimeUtil
+ sdfTime from yyyy-MM-dd HH:mm:ss.SSS to yyyy-MM-dd HH:mm:ss
+ sdfDateTimestamp parameter from public to private
頁腳 (Footer) - Issue Id
ISSUE ID 指的是工單系統的編號,如:Redmine 等。
但若 Git 線上平台未與工單系統整合的話,可先以「當天日期時間戳」 + 「流水號」,作為 issue id 培養習慣。
Sample
Today commit first time
add : DateTimeUtil
1. formateDate()
2. parseDate()
#20200515001
Today commit second time
fix : DateTimeUtil
1. sdfTimestamp
#20200515002
範例 (Sample)
Sample 01
init : JavaProjUtil
#20200515001
Sample 02
add : DateTimeUtil
1. formateDate()
2. parseDate()
#20200515002
Sample 03
fix : DateTimeUtil
+ sdfTimestamp : yyyy-MM-dd HH:mm:ss
#20200516003
Sample 04
adjust : util package name
#20200515004
Sample 05
review : DateTimeUtil
#20200516005
Sample 06
del : unused file
#20200516006
Sample 07
sync : old project util class
#20200516007
Sample 08
tmp : online issue , to fix it
#20200515008
Sample 09
merge : DateTimeService
#20200517009
留言
張貼留言