我在部落格這頁設定的置頂圖片就是很常見的情境,在大型專案中開發,我們能從 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
開頭用 refs 或 ref 都可以,任務單號的開頭 「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 遵守後,大家也因此受益,在某些時候要快速排查時,理解到當初工程師為什麼這樣寫的。