###### tags: `Git` `Commit Message` # 【學習筆記】如何撰好的 Git Commit Message ## 為什麼 Commit Message 很重要? Git 在每次 Commit 時,需要寫下 Git Commit Message(提交說明),用來記錄提交版本更動的摘要。 > 任何專案都至少由兩個以上的開發者共同合作開發 除了專案開發者,任何專案都會是跟其他開發者和、未來的自己共同開發維護的。當不同開發者接手專案時,能藉由瀏覽 Commit Message 內容快速進入狀況,瞭解程式異動的原因,如此也利於後續的維護。 ### 何謂好的 Commit Message? 一個好的 Git Commit Message 必須兼具 What & Why & How,能幫助開發者瞭解這個提交版本: 1. 做了什麼事情(What) 2. 為什麼要做這件事情(Why) 3. 用什麼方法做到的(How) ## Commit Message 的規範與準則 在團隊之間,撰寫 commit log 的方式應一致,也就是定義風格與內容,可透過遵守現有的慣例來實現。 一個 Commit Message 主要由 Header + Body + Footer 組成: ```htmlmixed= <type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer> ``` ### Message Header: `<type>(<scope>): <subject>` - type(必要):commit 的類別 - 如:feat, fix, docs, style, refactor, test, chore - scope(可選):commit 影響的範圍 - 如:資料庫、控制層、模板層等,視專案不同改變 - subject(必要):commit 的簡短描述 - 不超過 50 個字元 - 結尾不加句號 - 盡量讓 Commit 單一化,一次只更動一個主題 ### Message Body * 對本次 Commit 的詳細描述,解釋 What & Why & How * 可以分成多行,每一行不超過 72 個字元 * 說明程式碼變動的項目與原因,還有與先前行為的對比 ### Message Footer - 填寫任務編號 `issue #1246` - BREAKING CHANGE(可略),記錄不兼容的變動,後面是對變動的描述、以及變動原因和遷移方法 ## Header:`<type>` 類別規範 type 代表提交 Commit 的類別,以下為使用慣例: * feat:新增或修改功能(feature) * fix:修補 bug(bug fix) * docs:文件(documentation) * style:格式 * 不影響程式碼運行的變動,例如:white-space, formatting, missing semi colons * refactor:重構 * 不是新增功能,也非修補 bug 的程式碼變動 * perf:改善效能(improves performance) * test:增加測試(when adding missing tests) * chore:maintain * 不影響程式碼運行,建構程序或輔助工具的變動,例如修改 config、Grunt Task 任務管理工具 * revert:撤銷回覆先前的 commit * 例如:`revert:type(scope):subject` ### Commit Message 範例 以下舉幾個範例: ``` feat: message 新增信件通知功能 feat(優惠券): 加入搜尋按鈕,調整畫面 fix: 圓餅圖圖例跑版 fix: 意見反應,信件看不到圖片問題 style: 統一換行符號 CRLF to LF docs: 更新 README 相關資訊 docs: 修正型別註解 chore(submoudle): 變更 git url chore: 調整單元測試環境 refactor(每日通知信件): 重構程式結構 ``` 參考資料: - [Git Commit Message 這樣寫會更好,替專案引入規範與範例](https://wadehuanglearning.blogspot.com/2019/05/commit-commit-commit-why-what-commit.html) - [撰寫有效的 Git Commit Message](http://blog.fourdesire.com/2018/07/03/%E6%92%B0%E5%AF%AB%E6%9C%89%E6%95%88%E7%9A%84-git-commit-message/) - [如何寫一個Git Commit Message | louie_lu's blog](https://blog.louie.lu/2017/03/21/%E5%A6%82%E4%BD%95%E5%AF%AB%E4%B8%80%E5%80%8B-git-commit-message/#rules03) - [AngularJS Git Commit Message Conventions](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.