<style> html, body, .ui-content { background-color: #333; color: #ddd; } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { color: #ddd; } .markdown-body h1, .markdown-body h2 { border-bottom-color: #ffffff69; } .markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #fff; } .markdown-body img { background-color: transparent; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: white; border-left: 2px solid white; } .expand-toggle:hover, .expand-toggle:focus, .back-to-top:hover, .back-to-top:focus, .go-to-bottom:hover, .go-to-bottom:focus { color: white; } .ui-toc-dropdown { background-color: #333; } .ui-toc-label.btn { background-color: #191919; color: white; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { color: white; border-left: 1px solid white; } .markdown-body blockquote { color: #bcbcbc; } .markdown-body table tr { background-color: #5f5f5f; } .markdown-body table tr:nth-child(2n) { background-color: #4f4f4f; } .markdown-body code, .markdown-body tt { color: #eee; background-color: rgba(230, 230, 230, 0.36); } a, .open-files-container li.selected a { color: #5EB7E0; } </style> ###### tags: `Git` `SeanDev` `commit message` # 清楚的Commit Message 在做Commit提交時,除了將修改過後的內容提交上去外,還須為這次的commit做內容說明(Message),記錄提交版本更動的摘要。 良好的message撰寫有以下優點: 1. 個人 - 幫助自己回顧開發紀錄,方便快速瀏覽。(git log) - 可以過濾某些 commit(比如文檔改動),便於快速查找信息(git log —grep=”提交的訊息文字”) - 易於暸解Commit的意圖 1. 團隊 - 易於暸解功能添加/修改的前因後果 - 易於追蹤功能的開發狀況 - 有助於Code Review的進行 - 掌握Bug的修改狀況 - 讓其他開發維護人員易於進入狀況 - 向同事、合作夥伴或利益相關者傳達變化的過程。 不良的message撰寫有以下缺點: 1. 個人 - 無法回顧開發紀錄,需耗費時間重新了解程式碼 - 不明的message訊息,容易讓人遺忘Commit的意圖 - 無法掌握及回顧功能的開發狀況,需耗費時間處理或重新來過 1. 團隊 - 不易暸解功能添加/修改的前因後果,需耗費時間了解 - 功能的開發狀況不清楚,需耗費時間確認 - Code Review可能會更花時間 - 其他開發維護人員需花更多時間來暸解 範例 1: 良好的Commit Message > 新增登入功能畫面 > >建立帳號、密碼欄位UI >建立登入按鈕UI > 不良的Commit Message > 新增畫面 範例 2: 良好的Commit Message > 添加小明登入後的權限 > >小明在登入後希望有A功能 >因此新增特殊權限,讓小明登入時可使用A功能 >記得在Release版時移除 > 不良的Commit Message > 添加新的權限 > ## 團隊開發 Message Convention 規範 Git Commit Message 格式 ```jsx <type>[optional scope]: <subject> [optional body] [optional footer(s)] ``` ## Type(必填) 本次Commit的類型,若有重大功能調整,在Type後面加上! - feat: 增加新功能或修改功能 - fix: 修改Bug - docs: 文件修改或添加程式註解,不影響程式碼。 - style: coding style調整。如:空白、分號、空格、格式縮排等,不影響程式碼。 - refactor: 重構或優化程式碼,不影響程式功能。 - perf: 提升效能的修改。 - test: 新增或修改測試。 - chore: 建構程序或輔助工具的變動,不會修改程式碼和測試,如:環境建置或修改config等。 ## Scope(選填) 本次Commit影響的範圍,例如資料庫、Component、Module、Router等等 ## Subject(必填) 本次Commit的簡要說明描述。若無法做簡要說明,那可能是這個Commit太過複雜,需要考慮將提交部分內容抽離成另一個Commit。 - 描述內容第1個字詞以動詞為主。 - 描述文字字元不超過50字。 - 若為英文,第一個字母為大寫 - 在type: 空一格在寫Subject ## Body(選填) 本次 commit 的詳細描述,說明程式碼變動的項目與原因。 內容可包含這次Commit前產生的問題(為什麼做這件事?why)、commit做了什麼事(what)、用什麼方法做到(how)。 在使用fix、refactor、perf或feat修改功能時建議寫上詳細內容。 - 內容每 70個字元斷行 - 內容可以多解釋 what and why vs. how ## Footer(選填) 當前 commit 是針對某個 issue時或是pull request 號碼可在此添加 - 填入Issue編號,如#as123 ### 範例 ```jsx feat: 新增登入功能畫面 在login.html裡 建立帳號、密碼欄位UI 建立登入按鈕UI ``` ```jsx feat: 添加小明登入後的權限 小明在登入後希望有A功能 因此新增特殊權限,讓小明登入時可使用A功能 在 Login() 裡多一個isSuperMember的判斷 記得在Release版時移除 ``` ```jsx fix: 修改登入畫面跑版問題 使用手機瀏覽器開啟時,登入按鈕未顯示 因為css裡的content設定所造成 ``` ```jsx fix: 修正小明登入後可使用A功能的問題 正式版本的情況下,小明登入後不可以使用A功能 除非他升級成VIP會員 在acid189版開發時添加一個特殊權限的管道 在relese版時忘了刪除 移除 Login() 裡的isSuperMember的判斷 ``` ### 參考來源 [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) [AngularJS團隊 Message Convention 規範](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0) [Git Log 進階使用](https://blog.csdn.net/ly890700/article/details/52787257) [Commit訊息的重要性](https://docs.google.com/presentation/d/e/2PACX-1vRI5E0g1mDyXPcSuMG9nZ_XpBmnkk3SmloLt2Z5-ArEjFAM-GBtz9FXCT4Pxw0fq7hdbf0cId22DwxZ/pub?start=false&loop=false&delayms=60000&slide=id.g57075cf75d_0_151) [如何寫一個Git Commit Message](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/) ### 延伸閱讀 [Code Review](https://cythilya.github.io/2020/12/10/google-how-to-get-through-code-review/)