【git 提交訊息格式】如何描述提交資訊 ? | 9 種標頭型態與結構說明


在團隊開發中,通常都會要求寫提交訊息,並且盡可能地「清楚明白」 添加提交版本的說明訊息,是為了之後回頭查看歷史,能更快、更精準地找到 我整合過去工作經驗中,使用過的提交訊息格式 會先從訊息格式的整體架構開始,說明各個部分的元素組成與代表含義 然後再依照 header、body、footer 的順序,介紹參數的分類與用途。


目錄

  • 主體結構
  • 標頭 (Header)
    • 型態 (Type)
    • 標題 (Subject)
  • 主體 (Body) - 內容
  • 頁腳 (Footer) - Issue Id
  • 範本 (Sample)

主體結構 (Main Structure)

TagDescriptionLimitRequired
HeaderType : Subject50 wordsrequired
BodyDetail about commit content72 words per lineoptional
Footer#issue_idissue relationrequired

型態 (Type)

  1. init
  2. add
  3. fix
  4. adjust
  5. review
  6. del
  7. sync
  8. tmp
  9. 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

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

留言

熱門文章

Markdown 語法大全,範例模板

【如何寫乾淨的程式碼 ? 】程式設計 代碼風格 指南 | 基礎 + 9 個進階概念

【 git 基礎教程 #1】什麼是 git ? | Sourcetree 介紹 與 入門基礎操作教學

【什麼是 git flow ?】 5 項分支全詳解 | Sourcetree 實戰演練