我在部落格這頁設定的置頂圖片就是很常見的情境,在大型專案中開發,我們能從 Git Message 知道做了什麼動作,卻無法知道是「為了什麼情境」而做這些動作。

在軟體開發中,如果是 VS Code 使用者,通常都會安裝 GitLens 擴充套件(或者其他你習慣的 Git 擴充套件),好看到程式碼該行最後的 commit message。

而 Git Commit 的 message 流派不少,我認為 Web Frontend 在多人協作需要做到最基本、最大前提的一件事情 - 帶上開發的「任務單號」!

不論團隊用什麼任務發單管理系統,如 Redmine 或 Jira,在新增任務開票、開單後,該任務都會有一個系統自動產生的號碼或編號「任務單號」

理解修改的 Context 情境比知道改了什麼還重要

當開發者覺得某段 code 怪怪的,想了解自己或前人撰寫時的前因後果,就能拿帶在 commit 的單號去 Jira 或 Redmine 搜尋,了解「前因後果」。

很多時候,一個奇怪的 code 並不是工程師疏忽亂寫的,往往是在某些奇怪的要求或情境下做的處理。

做這件事的前因後果,通常還比這件事的程式修改類型是什麼重要,而這些前因後果會記在當時的任務開單系統上。

並且公司的人員會流動,很可能當時的前端、後端、PM 都不在公司了,這時的團隊成員,若有單號去回推過往任務,會對開發者在維護上有很大的助益。

某些任務或調整是不會有單號的,這時可以不用帶上去,還是可以保有一定的彈性,但若是有單號就一定要帶,要記得 commit message 是給人看的!

任務單號開頭

格式如下:

refs {任務單號碼} {你的 commit message}

假如你今天接到一個任務, Jira 單號是 CT-xxxx,那你這系列任務的 commit 開頭就是

refs #CT-xxxx

實際 commit message 就會如下

refs #CT-xxxx Update config file

多任務單號(主單號或子單號)就用逗點分隔

refs #SCRUM-xxxx, #CT-0000 Update config file

開頭用 refsref 都可以,任務單號的開頭 「SCRUM」、「CT」大小寫也皆可,# 符號也不是必須的,例如:

refs #SCRUM-xxxx, #CT-0000 Update config file

等同

ref #SCRUM-xxxx, #CT-0000 Update config file

ref SCRUM-xxxx, CT-0000 Update config file

refs scrum-xxxx, ct-0000 Update config file

 

(可選)加上狀態分類

當然,我們也可以替 commit 加上狀態分類,但這是可選而不是必須,可自行斟酌,例如:

refs {任務單號碼} {狀態分類} {你的 commit message}

實際就會是

refs #CT-xxxx feat: add player something feature

狀態分類除了可以用冒號,亦可用中括號強調

refs #CT-xxxx [feat] add player something feature

 

加上狀態

節錄網路上的分享,在軟體開發常見的 commit 狀態有以下幾種:

  • feat: 新增/修改功能 (feature)。
  • fix: 修補 bug (bug fix)。
  • docs: 文件 (documentation)。
  • style: 格式 (不影響程式碼運行的變動 white-space, formatting, missing semi colons, etc)。
  • refactor: 重構 (既不是新增功能,也不是修補 bug 的程式碼變動)。
  • perf: 改善效能 (A code change that improves performance)。
  • test: 增加測試 (when adding missing tests)。
  • chore: 建構程序或輔助工具的變動 (maintain)。
  • revert: 撤銷回覆先前的 commit 例如:revert: type(scope): subject (回覆版本:xxxx)。

 

(可選)多行修改項目

也可以一次 commit 多行子修改項目,格式如下:

refs {任務單號碼} {單號名稱或主題名稱}
1. {你做了什麼事1}
2. {你做了什麼事2}
3. {你做了什麼事3}

子項目開頭用數字或者一槓都可以

refs {任務單號碼} {單號名稱或主題名稱}
1. {你做了什麼事1}
2. {你做了什麼事2}
3. {你做了什麼事3}

當然也可以加上狀態分類

refs {任務單號碼} {狀態分類} {單號名稱或主題名稱}
- {你做了什麼事1}
- {你做了什麼事2}
- {你做了什麼事3}

2024 年更新:這個小習慣並不是最佳解,我相信絕對還有其他作法能幫助快速排查搜尋到過往紀錄,但截至今日我仍認為 Git Commit 加上任務單號能在某些小地方解救工程師。

並且在現職公司我要求 Web Team 遵守後,大家也因此受益,在某些時候要快速排查時,理解到當初工程師為什麼這樣寫的。