導語:任何軟件項目都是一個協做項目,它至少須要2個開發人員參與,當原始的開發人員將項目開發幾個星期或者幾個月以後,項目步入正規。不過他們或者後續的開發人員仍然須要常常提交一些代碼去修復bug或者實現新的feature。咱們常常有這種感覺:當一個項目時間過了好久以後,咱們對於項目裏面的文件和函數功能漸漸淡忘,從新去閱讀熟悉這部分代碼是很浪費時間而且惱人的一件事。可是這也無法徹底避免,咱們可使用一些技巧儘量減小從新熟悉代碼的時間。commit messages能夠知足須要,它也反映了一個開發人員是不是良好的協做者。前端
編寫良好的Commit messages能夠達到3個重要的目的:git
先來看看一個比較好的例子,感覺一下:
github
下面談談,如何讓項目裏面的Commit messages步入規範化,流程化。npm
<type>: <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
Type表示提交類別,Subject表示標題行, Body表示主體描述內容。vim
Type的類別說明:前端工程化
# 標題行:50個字符之內,描述主要變動內容 # # 主體內容:更詳細的說明文本,建議72個字符之內。 須要描述的信息包括: # # * 爲何這個變動是必須的? 它多是用來修復一個bug,增長一個feature,提高性能、可靠性、穩定性等等 # * 他如何解決這個問題? 具體描述解決問題的步驟 # * 是否存在反作用、風險? # # 若是須要的化能夠添加一個連接到issue地址或者其它文檔
這3個問題給代碼的變動創建了良好的上下文,可讓其餘的代碼review人員或者項目成員直觀的判斷修改點是否正確。一條良好的commit message也可讓維護者知道這個patch是否適合發佈到穩定的版本中去。函數
若是一個patch沒有回答上面的這幾個問題,那麼它是無心義的。它會給review的人員形成負擔,讓他們花費大量時間去評審討論這個patch的做用和意義。更糟糕的是,若是一個項目實施SCM紀律,則這個patch會被拒絕掉,而後開發人員須要花費時間從新編寫一個新的patch。從新編寫一個複雜的patch代價是巨大的,而把commit message寫好只會花費幾分鐘。工具
若是你是vim用戶,將下面這行代碼加入到~/.vimrc。這會幫助你檢查拼寫和自動換行性能
autocmd Filetype gitcommit setlocal spell textwidth=72
Commitizen可讓你的commit message更加規範統一,適合項目團隊使用,使用也很簡單,使用npm安裝後,提交代碼的時候使用git cz去替代之前的git commit命令便可。測試
安裝commitizen:
$ npm install -g commitizen
使用截圖:
conventional-changelog是用來從git的元數據中生成 Change log文檔的工具,只要你提交的格式知足它定義的標準,此處以angular標準爲例子。使用它生成的Change log包含如下三個部分:
Bug Fixes Bug修復的信息
Features 增長的特性
BREAKING CHANGES 重大變動
能夠參考它生成的文檔CHANGELOG.md,使用以下:
$ npm install -g conventional-changelog-cli $ cd my-project $ conventional-changelog -p angular -i CHANGELOG.md -s
這不會覆蓋你以前的CHANGE.md文檔內容,會在這個文件的最上面插入新生成的日誌信息。