我們?cè)谌粘J褂肎it提交代碼時(shí)經(jīng)常會(huì)寫(xiě) commint message胞四,否則就不允許提交刚操。
一般來(lái)說(shuō)闸翅,commit message 應(yīng)該清晰明了,說(shuō)明本次提交的目的菊霜。
目前坚冀,社區(qū)有多種 Commit message 的寫(xiě)法規(guī)范。本文介紹Angular規(guī)范鉴逞,這是目前使用最廣的寫(xiě)法记某,比較合理和系統(tǒng)化司训,并且有配套的工具。
格式化的Commit message 有什么好處液南?
提供更多的歷史信息壳猜,方便快速瀏覽。
可以過(guò)濾某些commit(比如文檔改動(dòng))滑凉,便于快速查找信息统扳。
可以直接從commit生成Change log。
Commit message 規(guī)范說(shuō)明
如果使用 IDEA 開(kāi)發(fā)畅姊,我們可以先裝個(gè)插件: Git Commit Template
裝完之后重啟IDEA咒钟,如果我們提交代碼會(huì)發(fā)現(xiàn)多了一個(gè)按鈕:
點(diǎn)擊之后就會(huì)出現(xiàn)一個(gè) Commit Template,主要分為下面三個(gè)部分: Header若未, Body朱嘴,F(xiàn)ooter。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
Header
Header的部分只有一行,包括三個(gè)字段: type(必需), scope(可選), subject(必需)
對(duì)應(yīng)到idea插件上圖的配置分別為 Header部分的:
- type(必需) Type of change commit類(lèi)別
- scope(可選) Scope of this change commint影響的范圍陨瘩,如功能模塊腕够,或者版本號(hào)
- subject(必需) Short description 簡(jiǎn)短的描述,如果有Team任務(wù)舌劳,可以寫(xiě)提任務(wù)編號(hào)
type
用于說(shuō)明 commit 的類(lèi)別帚湘,只允許使用下面7個(gè)標(biāo)識(shí)
- feat:新功能(feature)
- fix:修補(bǔ)bug
- docs:文檔(documentation)
- style: 格式(不影響代碼運(yùn)行的變動(dòng),空格,格式化,等等)
- refactor:重構(gòu)(即不是新增功能,也不是修改bug的代碼變動(dòng))
- perf: 性能 (提高代碼性能的改變)
- test:增加測(cè)試或者修改測(cè)試
- build: 影響構(gòu)建系統(tǒng)或外部依賴(lài)項(xiàng)的更改(maven,gradle,npm 等等)
- ci: 對(duì)CI配置文件和腳本的更改
- chore:對(duì)非 src 和 test 目錄的修改
- revert: Revert a commit
Body
Body 部分是對(duì)本次 commit 的詳細(xì)描述甚淡,可以分成多行大诸。下面是一個(gè)范例。
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
有兩個(gè)注意點(diǎn)贯卦。
(1)使用第一人稱(chēng)現(xiàn)在時(shí)资柔,比如使用change
而不是changed
或changes
。
(2)應(yīng)該說(shuō)明代碼變動(dòng)的動(dòng)機(jī)撵割,以及與以前行為的對(duì)比贿堰。
Footer
Footer 部分只用于兩種情況。
不兼容變動(dòng)
如果當(dāng)前代碼與上一個(gè)版本不兼容啡彬,則 Footer 部分以BREAKING CHANGE
開(kāi)頭羹与,后面是對(duì)變動(dòng)的描述、以及變動(dòng)理由和遷移方法庶灿。
關(guān)閉 Issue
如果當(dāng)前 commit 針對(duì)某個(gè)issue纵搁,那么可以在 Footer 部分關(guān)閉這個(gè) issue 。