你是否曾經打開專案的 Git 紀錄 (git log),卻看到一整排像是「update」、「fix bug」、「修改」、「暫存」這樣毫無意義的訊息?
身為開發者,我們都知道寫好程式碼很重要,但寫好 Commit Message (提交訊息) 同樣關鍵。一個好的 Commit Message 就像是程式碼的導航圖,能幫助團隊成員(還有未來的你自己)快速理解這段程式碼「改了什麼」以及「為什麼要改」。
今天這篇文章,我們將用最簡單、好理解的方式,介紹目前業界最主流的 Commit Message 規範(通常參考自 Conventional Commits 或 Angular 規範),讓你從此告別混亂的版控紀錄!
為什麼我們需要 Commit Message 規範?
在進入正題之前,先想像一下:如果你在圖書館找書,但書背上都沒有書名,只貼了「新書」、「舊書」、「好看」的標籤,你找得到你要的資料嗎?
Git Commit 規範就是為你的程式碼變動貼上正確的分類標籤。這樣做有三個巨大的好處:
- 一目瞭然:不用看程式碼,光看標題就知道這次改動是新增功能、修 Bug 還是單純排版。
- 自動化:規範化的訊息可以配合工具自動產生 ChangeLog (更新日誌)。
- 團隊協作:減少溝通成本,Code Review 更有效率。
必學的 9 大 Commit 類型 (Type)
我們通常會在 Commit Message 的開頭加上一個「前綴詞 (Prefix)」,格式通常長這樣:
type: subject (例如:feat: 新增會員登入功能)
以下是 9 個你最需要知道的標準類型,我已經將它們分類並解釋如下:
1. 功能開發與修復 (最常用)
這是你日常開發中最常使用的兩個標籤:
feat(Feature)- 含義:新增/修改功能。
- 什麼時候用:當你寫了一個新的功能,或是對現有功能做了明顯的修改時。
- 範例:
feat: 新增使用者上傳大頭貼功能
fix(Bug fix)- 含義:修補 bug。
- 什麼時候用:當程式碼出現錯誤,你進行了修復時。
- 範例:
fix: 修正購物車金額計算錯誤的問題
2. 程式碼品質與整理 (不影響功能)
這些改動不會改變程式原本的邏輯或功能,純粹是為了讓程式碼更好讀、更乾淨:
docs(Documentation)- 含義:文件。
- 什麼時候用:你只改了註解、README.md 或其他說明文件,完全沒動到程式邏輯。
- 範例:
docs: 更新 API 使用說明文件
style(Formatting)- 含義:格式變動 (不影響程式碼運行的變動)。
- 什麼時候用:
修正空白鍵、縮排、補上分號、換行等。
注意!這不是指 CSS 的樣式修改,而是指「程式碼的寫作風格」。 - 範例:
style: 修正 main.js 的縮排格式
refactor(Refactoring)- 含義:重構。
- 什麼時候用:
這是一個很重要的標籤。指既不是新增功能,也不是修補 Bug 的程式碼變動。
通常是為了讓程式架構更好、更乾淨而做的修改。 - 範例:
refactor: 優化訂單處理流程的程式結構
3. 效能與測試
perf(Performance)- 含義:改善效能。
- 什麼時候用:專門針對提升程式執行速度、記憶體優化的改動。
- 範例:
perf: 優化圖片載入速度,減少 50% 等待時間
test(Tests)- 含義:增加測試。
- 什麼時候用:補上遺漏的測試案例,或是修改現有的測試程式碼。
- 範例:
test: 新增登入模組的單元測試
4. 維護與其他
chore(Chores)- 含義:雜務、建構程序或輔助工具的變動。
- 什麼時候用:
這通常指那些「不影響正式發佈版本」的修改。
例如修改.gitignore、更新 npm 套件、調整打包設定 (Webpack/Vite) 等。 - 範例:
chore: 更新專案依賴套件至最新版本
revert(Revert)- 含義:撤銷回覆先前的 commit。
- 什麼時候用:當你發現某個版本有大問題,需要直接退回到之前的狀態時。
- 範例:
revert: fix(auth): 移除錯誤的驗證邏輯 (回覆版本:a1b2c3d)
總結表格:快速對照
為了方便記憶,我整理了這張速查表,建議你可以存下來:
| 類型 | 英文標籤 | 說明 | 適用情境 |
|---|---|---|---|
| 功能 | feat | Feature | 新增或修改各項功能 |
| 修復 | fix | Bug Fix | 修正程式錯誤 (Bug) |
| 文件 | docs | Documentation | 修改 README、註解、文件 |
| 格式 | style | Styles | 調整縮排、空白、分號 (不影響邏輯) |
| 重構 | refactor | Refactor | 整理程式碼結構 (無新功能/無修Bug) |
| 效能 | perf | Performance | 提升效能、優化速度 |
| 測試 | test | Tests | 新增或修改測試案例 |
| 雜項 | chore | Chores | 修改設定檔、更新依賴套件 |
| 復原 | revert | Revert | 取消先前的提交 |
結論
養成良好的 Commit Message 習慣,起初可能會覺得有點麻煩,要記這麼多英文縮寫。但相信我這是一個專業工程師養成的必經之路。
當你三個月後回頭看自己的程式碼,或者當你的同事接手你的專案時,看到整齊劃一的 feat, fix, refactor,他們會發自內心地感謝你。
從今天的下一個 Commit 開始,試著加上這些前綴吧!






