Commit message 代碼提交規範
**
前言
**
在多人協做項目中,若是代碼風格統1、代碼提交信息的說明準確,那麼在後期協做以及Bug處理時會更加方便。Git 每次提交代碼,都要寫 Commit message(提交說明),不然就不容許提交。通常來講,commit message 應該清晰明瞭,說明本次提交的目的。node
Commit message 的做用git
● 提供更多的歷史信息,方便快速瀏覽
● 過濾某些commit(好比文檔改動),便於快速查找信息
● 直接從commit生成Change log
● 可讀性好,清晰,沒必要深刻看代碼便可瞭解當前commit的做用。
● 爲 Code Reviewing(代碼審查)作準備
● 方便跟蹤工程歷史
● 提升項目的總體質量,提升我的工程素質
Commit message 的格式npm
Commit message 包括三個部分:Header,Body 和 Footerjson
<type>(<scope>): <subject> // 空一行 <body> // 空一行 <footer>
1、Header工具
Header部分只有一行,包括三個字段:type(必需)、scope(可選)和subject(必需)
(1)type性能
type用於說明 commit 的類別,只容許使用下面的標識單元測試
feat:新增功能(feature) fix:修補bug docs:僅僅修改了文檔,好比 README, CHANGELOG, CONTRIBUTE等等 style: 僅僅修改了空格、格式縮進、逗號等等,不改變代碼邏輯 refactor:重構(即不是新增功能,也不是修改bug的代碼變更) test:增長測試,包括單元測試、集成測試等 chore:構建過程或輔助工具的變更 type:表明某次提交的類型,好比是修復一個bug仍是增長一個新的feature。 perf: 優化相關,好比提高性能、體驗 revert: 回滾到上一個版本 ci:自動化流程配置修改
注:若是type爲feat和fix,則該 commit 將確定出如今 Change log 之中測試
(2)scope優化
scope用於說明 commit 影響的範圍,好比數據層、控制層、視圖層等等,視項目不一樣而不一樣。
(3)subject命令行
①subject是 commit 目的的簡短描述,不超過50個字符。 ②以動詞開頭,使用第一人稱如今時,好比change,而不是changed或changes ③第一個字母小寫 ④結尾不加句號(.)
2、Body
Body 部分是對本次 commit 的詳細描述,能夠分紅多行
3、Footer
Footer 部分只用於兩種狀況:
(1)不兼容變更
若是當前代碼與上一個版本不兼容,則 Footer 部分以BREAKING CHANGE開頭,後面是對變更的描述、以及變更理由和遷移方法
BREAKING CHANGE: isolate scope bindings definition has changed.
To migrate the code follow the example below: Before: scope: { myAttr: 'attribute', } After: scope: { myAttr: '@', } The removed `inject` wasn't generaly useful for directives so there should be no code using it.
(2)關閉 Issue
若是當前 commit 針對某個issue,那麼能夠在 Footer 部分關閉這個 issue Closes #234 也能夠一次關閉多個 issue Closes #123, #245, #992
4、Revert
若是當前 commit 用於撤銷之前的 commit,則必須以revert:開頭,後面跟着被撤銷 Commit 的 Header revert: feat(pencil): add 'graphiteWidth' option This reverts commit 667ecc1654a317a13331b17617d973392f415f02. ①Body部分的格式是固定的,必須寫成This reverts commit .,其中的hash是被撤銷 commit 的 SHA 標識符。 ②若是當前 commit 與被撤銷的 commit,在同一個發佈(release)裏面,那麼它們都不會出如今 Change log 裏面。若是二者在不一樣的發佈,那麼當前 commit,會出如今 Change log 的Reverts小標題下面。 commit message工具 Commitizen是一個格式化commit message的工具。
**
使用
**
1.在cmd中經過npm來全局安裝:
npm install -g commitizen
2.在項目目錄下建立package.json文件
npm init
3.打開項目執行以下命令:
commitizen init cz-conventional-changelog --save --save-exact
注意:若是是第二次配置,須要用–force:
commitizen init cz-conventional-changelog --save --force
4.將未暫存文件全部變化提交到暫存區
git add .
① git add . :他會監控工做區的狀態樹,使用它會把工做時的全部變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。
②git add -u :他僅監控已經被add的文件(即tracked file),他會將被修改的文件提交到暫存區(git add --update的縮寫)。add -u 不會提交新文件。
③git add -a :是上面兩個功能的合集(git add --all的縮寫)
5.命令行輸入提交命令
git cz
輸入命令後依次提示:
①上、下鍵選擇要提交的更改類型 ②此更改的範圍是什麼(例如組件或文件名)?(按回車鍵跳過) ③寫一個簡短的祈使句來描述這個變化 ④提供更詳細的更改說明:(按回車鍵跳過) ⑤有什麼重大變化嗎? ⑥這一變化是否會影響 任何未解決的問題? 6.再推送到本地git倉庫
git push 注意: ① 代碼須要提測,而且本身都測試OK了,若是一次性測試經過則能夠把master合併到本身的分支,而後push本身的分支,進行提測 ② 代碼提測了,若是有問題,把問題修改好後,再push本身的分支
打印日誌命令
git log
1.輸出CHANGELOG記錄,(文件名稱本身設置),經過如下命令,在項目中生成 CHANGELOG.md 文件
①安裝生成 Change log 的工具
$ npm install -g conventional-changelog-cli
② 經過提交記錄生成 CHANGELOG.md
$ conventional-changelog -p -i CHANGELOG.md -s
2.打印出 git log 的日誌記錄(詳細日誌記錄)
git log > 文件名
例如:git log >1.txt
在該項目路徑中可查看 1.txt 日誌記錄文件
type類型可自行配置
type是能夠本身配置和修改的,在項目路徑下的