我們在日常使用Git提交代碼時經常會寫 commint message,否則就不允許提交。
一般來說,commit message 應該清晰明了,說明本次提交的目的。
目前,社區有多種 Commit message 的寫法規范。本文介紹Angular規范,這是目前使用最廣的寫法,比較合理和系統化,并且有配套的工具。
格式化的Commit message 有什么好處?
提供更多的歷史信息,方便快速瀏覽。
可以過濾某些commit(比如文檔改動),便于快速查找信息。
可以直接從commit生成Change log。
Commit message 規范說明
如果使用 IDEA 開發,我們可以先裝個插件: Git Commit Template
裝完之后重啟IDEA,如果我們提交代碼會發現多了一個按鈕:
點擊之后就會出現一個 Commit Template,主要分為下面三個部分: Header, Body,Footer。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
Header
Header的部分只有一行,包括三個字段: type(必需), scope(可選), subject(必需)
對應到idea插件上圖的配置分別為 Header部分的:
- type(必需) Type of change commit類別
- scope(可選) Scope of this change commint影響的范圍,如功能模塊,或者版本號
- subject(必需) Short description 簡短的描述,如果有Team任務,可以寫提任務編號
type
用于說明 commit 的類別,只允許使用下面7個標識
- feat:新功能(feature)
- fix:修補bug
- docs:文檔(documentation)
- style: 格式(不影響代碼運行的變動,空格,格式化,等等)
- refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
- perf: 性能 (提高代碼性能的改變)
- test:增加測試或者修改測試
- build: 影響構建系統或外部依賴項的更改(maven,gradle,npm 等等)
- ci: 對CI配置文件和腳本的更改
- chore:對非 src 和 test 目錄的修改
- revert: Revert a commit
Body
Body 部分是對本次 commit 的詳細描述,可以分成多行。下面是一個范例。
More detailed explanatory text, if necessary. Wrap it to
about 72 characters or so.Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent
有兩個注意點。
(1)使用第一人稱現在時,比如使用change
而不是changed
或changes
。
(2)應該說明代碼變動的動機,以及與以前行為的對比。
Footer
Footer 部分只用于兩種情況。
不兼容變動
如果當前代碼與上一個版本不兼容,則 Footer 部分以BREAKING CHANGE
開頭,后面是對變動的描述、以及變動理由和遷移方法。
關閉 Issue
如果當前 commit 針對某個issue,那么可以在 Footer 部分關閉這個 issue 。