---
# System prepended metadata

title: Git commit message 建議
tags: [Git]

---

###### tags: `Git`
# Git commit message 建議

## 什麼是Commit message?

每次提交程式時的訊息，通常是用來記錄此次版本的相關資訊。

## 為何需寫Commit message?

- 助於日後幫助回憶其變動原因。
- 降低程式管理成本。



## 提交格式

由三大部分組成:

1. Header
2. Body
3. Footer

```tiddlywiki=
Header: <type>(<scope>):<subject>
- type: commit的種類，必要欄位。
- scope: commit影響範圍，如資料庫等，可選欄位。
- subject: commit的簡短描述，不超過50字元，結尾不佳句號，必要欄位。

Body: 
- Commit的詳細描述，可多行，每行不超過72字元。
- 描述程式變動項目與理由，以及與先前行為之差異。

Footer:
- 填寫任務編號。
- 紀錄不兼容之變動。
```

type 種類限制如下:
- feat: 新增/修改功能(feature)。
- fix: 修正錯誤。
- docs: 文件(documentations)。
- style: 格式(不影響程式運行如 tab)。
- refactor: 重構(相同功能下，優化其架構或可讀性)。
- perf: 改善效能(performance)。
- test: 增加測試。
- chore: 輔助工具變動。
- revert: 撤銷先前的commit。 


## 種類範例

### feat
```tiddlywiki=
feat: 新增遊戲菜單的控制來源。

需求:
1. 遊戲菜單新增滑鼠控制。
2. 遊戲菜單新增按鍵控制。

修改項目:
1. 針對各選項新增滑鼠偵測。
2. 建立Indicator table，使鍵盤依據table控制。

issue #666
```

### fix

```tiddlywiki=
fix: 按鍵映射失效問題。

問題: 
1. 按下ESC鍵沒有任何反應。

原因: 
1. 搞錯內建映射API的parameter定義。

修正項目: 
1. 調換映射之parameter。

issue #777
```

### docs

```tiddlywiki=
docs: 新增class註解
```

```tiddlywiki=
docs: 移除過期註解

過期註解佔用太多行數且無參考價值。

issue #123
```

### style

```tiddlywiki=
style: 對齊程式碼

統一按照tab格數對齊，並按照階層格式化。

issue #124
```

### refactor

```tiddlywiki=
refactor: 重構校正區域查詢邏輯

為了可讀性，將原本的switch case邏輯，改成字典查詢。

修改項目:
1. 建立字典table
2. 利用TryGetValue方法讀取校正區域

issue #125
```

### perf

```tiddlywiki=
perf: 優化timeout時間

原本timeout太久，導致用戶抱怨，故優化。

修改項目:
1. 將原本timeout時間30s改為10s。

結果:
1. 縮短系統無回應時的響應時間。

issue #888
```

### revert

```tiddlywiki=
revert: perf:優化timeout時間

客戶最後決定timeout時間維持30秒即可，故退版。
```



## 參考

- [Git Commit Message 這樣寫會更好，替專案引入規範與範例](https://ithelp.ithome.com.tw/articles/10228738)
- Angular commit message規範