前言
我們在每次提交代碼時,都需要編寫Commit Message,否則是不允許提交的。 git commit -m "first commit with userInfo service"
編寫Commit Message需要遵循一定的范式,內容應該清晰明了,指明本次提交的目的,便于日后追蹤問題。
commitizen
就是這么樣一款工具,他用來規范化我們的commit消息。
安裝指南
- 安裝commitizen
sudo npm install -g commitizen
- 配置
cd到.git
所在目錄
commitizen init cz-conventional-changelog --save --save-exact
- 使用
用git cz
命令來取代git commit
異常情況
有可能提示你缺少package.json
package.json的下載地址
配置第二個項目
當我們配置第二個項目的時候我們只需要進入到對應的項目目錄下,輸入如下的命令commitizen init cz-conventional-changelog --force
我們就可以使用git cz
命令了
commitizen詳解
Message 格式
一般來說,Commit Message 應包含三部分內容:Header、Body、Footer
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
Header
Header部分應只包含一行,包括三個字段:type、scope和subject
- type type用于說明Commit的類型,包含一下7種類型
feat:新功能(feature)
fix:修補bug
docs:文檔(documentation)
style: 格式(不影響代碼運行的變動)
refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
test:增加測試
chore:構建過程或輔助工具的變動
- scope
scope用于說明本次Commit所影響的范圍,比如controller、user或者README,視項目的不同而不同
-
subject
subject是本次Commit目的的簡短描述,一般不要超過50個字符
以動詞開頭,使用第一人稱現在時,比如change,而不是changed或changes
第一個字母小寫
結尾不加句號(.)
Body
Body是對本地提交的一個詳細描述,下面是一個示例
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
Footer
Footer只用于兩種情況
- 不兼容改動
如果當前代碼與上一個版本不兼容,則 Footer 部分以BREAKING CHANGE開頭,后面是對變動的描述、以及變動理由和遷移方法。
- 關閉Issue
如果當前Commit是針對某個Issue的提交,那么久可以在Footer中關閉這個Issue:Closes #234