轉載連接:https://www.jianshu.com/p/bd712e42f2e9git
參考連接:http://www.javashuo.com/article/p-uwfwuejx-ck.htmlgithub
平時提交的變更信息是應該遵循 Angular 規範 的,標準格式爲:npm
<類型>[可選的做用域]: <描述> [可選的正文] [可選的腳註]
提交說明包含了下面的結構化元素,以向類庫使用者代表其意圖:json
fix
的提交表示在代碼庫中修復了一個 bug(這和語義化版本中的 PATCH
相對應)。feat
的提交表示在代碼庫中新增了一個功能(這和語義化版本中的 MINOR
相對應)。BREAKING CHANGE:
的提交,表示引入了破壞性變動(這和語義化版本中的 MAJOR
相對應)。破壞性變動能夠是任意 類型 提交的一部分。對於 fix:
、feat:
和 chore:
,乃至更多其它的 類型 而言,它都是有效的。fix:
和 feat:
以外的提交 類型 也都是支持的,例如 Angular 約定 中推薦使用 docs:
、style:
、refactor:
、perf:
、test:
、chore:
,但這些標籤在約定式提交規範中並非強制性的。其餘標籤含義:segmentfault
本文檔中的關鍵詞 「必須」、「禁止」、「須要」、「應當」、「不該當」、「應該」、「不該該」、「推薦」、「能夠」 和 「可選」 應按照 RFC 2119 的描述解釋。微信
feat
或 fix
的名詞組成,其後接冒號和空格。feat
類型。fix
類型。fix(parser):
等。Fixes #13
等)。BREAKING CHANGE
,緊跟冒號和空格。BREAKING CHANGE:
以後必須提供描述,以描述對 API 的變動。例如 BREAKING CHANGE: environment variables now take precedence over config files.BREAKING CHANGE
、外部連接、issue 引用和其它元數據信息。feat
和 fix
以外的類型。如今終於輪到 commitizen 出場了,下載地址:https://github.com/commitizen/cz-climarkdown
安裝ide
npm install -g commitizen
在項目目錄裏,運行下面的命令工具
commitizen init cz-conventional-changelog --save --save-exact
這樣以後,凡是用到git commit命令,一概改成使用git cz。會出現選項,用來生成符合格式的 Commit message。測試
注意:若是項目中存在多個modules,那麼只需在根目錄安裝便可。
那麼,有了規範,對於懶人來講依然可能不去遵照,這時就須要這個插件來進行提交檢查
將 validate-commit-msg.js 放到項目根目錄下,並加入 Git 的 hook。
"config": { "ghooks": { "commit-msg": "./validate-commit-msg.js" } }
每次git commit 的時候,這個腳本就會自動檢查 Commit message 是否合格。若是不合格,就會報錯。
$ git add -A $ git commit -m "edit markdown" INVALID COMMIT MSG: does not match "<type>(<scope>): <subject>" ! was: edit markdown
最後,當咱們能夠經過 conventional-changelog 來自動生成 change log 了。
npm install -g conventional-changelog $ cd my-project $ conventional-changelog -p angular -i CHANGELOG.md -w
上面命令不會覆蓋之前的 Change log,只會在CHANGELOG.md的頭部加上自從上次發佈以來的變更。
若是你想生成全部發布的 Change log,運行下面的命令:
$ conventional-changelog -p angular -i CHANGELOG.md -w -r 0
爲了方便,將其寫入 package.json 的scripts字段:
{ "scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0" } }
直接運行:
$ npm run changelog