commit
?咱們有的時候去接盤別人的代碼或者是團隊協做的時候,有時候會根據同伴或者前者的commit
來分析當次代碼所產生的side effect
。咱們指望的是分明的、一眼能夠抓住重點的commit
信息,可是咱們卻常常會看到test
、fix bugs
....等等這樣的信息。emmmmmm~~ 有的時候會無從下手,須要仔細看看這些代碼究竟進行了一些什麼樣的改動。然而這種時候每每會因爲後者不知道前者代碼的結構而致使以前解決的bug
或者實現的feature
被後者覆蓋或者是再現。
固然,上面的這些狀況是咱們不但願出現的。爲了不這些狀況,咱們須要分明的、清晰的、有結構的、語義化的、約定式的commit
方式。
如今比較流行的是:jquery
commitizen
: Angluar
團隊的提交代碼方式,後來被你們普遍的應用。git template
: 自定義git
模版,這樣的須要團隊來制定一套你們都承認的提交模版,而後你們按照這套模版來進行提交。commitizen
We have very precise rules over how our git commit messages can be formatted. This leads to more readable messages that are easy to follow when looking through the project history. But also, we use the git commit messages to generate the AngularJS change log.
webpack
上面的用渣渣翻譯器翻譯爲:git
對於如何格式化git提交消息,咱們有很是精確的規則。這將致使在查看項目歷史時更易於遵循的可讀消息。此外,咱們使用git提交消息來生成AngularJS更改日誌。web
# 全局安裝commitizen
npm install -g commitizen
# 全局安裝模版
npm install -g cz-conventional-changelog
# for macos
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
# for anySysterm 手動建立.czrc,添加如下內容
{ "path": "cz-conventional-changelog" }
# 轉到你的project下
cd your project
# 項目內安裝
commitizen init cz-conventional-changelog --save --save-exact
# 運行以上命令以後會在package.json中生成下面內容
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
複製代碼
這裏,就簡單的配置了commitizen
在咱們的環境中了。咱們只須要在每次執行git commit
的時候替換爲git cz
便可,就會看到一下內容:
express
feat
: 新功能fix
: 修復bug
doc
: 文檔改變style
: 代碼格式變動refactor
: 某個已有功能重構perf
: 性能優化test
: 增長測試build
: 改變build
工具,好比webpack
變成grunt
revert
: 撤銷上一次commit
ci
: 更改ci configuration
chore
: 一些不更改src
或者test
相關文件的提交scope
說明這次修改的影響範圍,能夠根據本身的狀況來進行填寫, 官方給出了幾個:macos
all
: 表示影響很大,如修改了總體依賴location
: 表示影響小,修改了某個小的功能module
: 表示會影響整個模塊,如登陸模塊等subject
用來簡要描述本次變更,概述便可
npm
body
具體的描述這次提交的修改內容,應儘可能詳細json
footer
放置備註等。若爲bug
,可關聯bug id
。性能優化
最終樣子:
bash
這就是一次簡單的提交。固然commitizen
還不止如此,它還能夠根據咱們每次的commitizen
來根據對應的版原本生成對應版本的changelog
。
# command
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
複製代碼
-i
: 表示從CHANGELOG.MD
中讀取changelog
-s
: 讀寫changelog
爲同一個文件-r
: 表示生成changelog
的release
版本數量,默認爲1,所有則是0 因爲個人示例的commit
個數不夠多,這裏選取angular
的一部分changelog
來展現。commit
的style,能夠下載conventional-changelog-cli
來更換不同的風格,它包含了: atom
, codemirror
, ember
, eslint
, express
, jquery
等。只須要將上述的命令中的angular
替換爲你想要風格的名字便可。npm
項目中的package.json
中的script
中增長這樣一條命令方便生成changelog
:{
"script": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.MD"
}
}
複製代碼
以上就是對commitizen
的一個簡單的介紹,上面的命令你也能夠配置在githooks
裏用來對git
個性化的定製。下面推薦幾個另外的插件:
standard-version
: Automate versioning and CHANGELOG generation, with semver.org and conventionalcommits.orgvscode-changelog-generator
: vscode extension to generate changelogcommitlint
: Lint commit messages(這個簡單的說兩句,自定義的話,可是又不想寫模版,還想用commit的話,能夠用這個來限制爲commitizen格式的。下面放一個官方的圖)你也能夠關注個人公衆號