不知道你們有沒有看過本身項目的git 提交信息-----我看過好屢次 ,不忍直視 而後提醒一塊兒的小夥伴 :你們規範點 信息要詳細,前端
過段時間再看下 ,仍是同樣。node
相信不少猿都有這樣的感覺,對於垃圾的提交信息深惡痛絕,特別是那些提交信息爲 "fix bug"的commit,SO, 若是提交的時候能有ios
些填寫規範的提示 或者高級點有交互式的約束就行了。git
這裏給出兩種方案,也是業界比較通用的 github
1. commitizen 交互式約束命令 提交 web
2.配置git commit 模板 npm
先來介紹第一種:(基於MAC OS 安裝)json
知名前端web項目AngularJS的提交記錄在業內被許多人稱讚,其規範同時也逐漸被你們引用,爲了把這些規範實際應用到項目中,我vim
們就須要 commitizen 這個小工具,該工具是基於Node的,所以咱們首先必須先安裝node環境 ,node環境好了後即可以開始安裝咱們的性能優化
利器了,步驟很簡單:
a. npm 全局安裝利器 commitizen
npm install -g commitizen
b.安轉規範模板文件
這裏有個要注意的地方 規範模板文件分全局(也就是說 這個規範適用於你電腦上全部的git 項目)的和單個倉庫(只針對一個git工程)的
全局安裝 :
先全局下載 規範模板文件
1. npm install -g cz-conventional-changelog 其中 cz-conventional-changelog 這個東西就是AngularJS的規範
2. echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc ,此時你當前用戶的根目錄下應該能夠看到一個 .czrc的文件了
而後你切換到你的git 工程下 ,在當你須要使用 git commit 的地方更換成 git cz就能顯示出 commit 的交互界面
局部安裝:
1.直接 cd到你的git工程下
2.commitizen init cz-conventional-changelog --save --save-exact 安裝規範文件,若是你的項目自己就是 node系列的 如 web
前端項目 ,你的項目下應該是有個 package.json文件的,此時你運行 上面的命令不會報錯 直接成功,但若是你的項目是 ios 、Android
工程根目錄下沒有 package.json的話你就須要 npm init 一下,而後會看到一個package.json的目錄
3.commitizen init cz-conventional-changelog --save --save-exact 此時你會發現又多了個nodes_modules文件夾沒辦法 ,你兩個
文件你應該不會導入到工程中吧,直接加入到 gitignore文件中去好了
因此推薦全局安裝 ,好的規範應該用在全部的工程上.
你是否注意到,當你執行 git cz後的那些提示信息,按照一步一步填寫 ,最終會生成以下格式的提示信息
<type>(<scope>) : <subject>
<空行>
<body>
<空行>
<footer>
其中 type 的值能夠有不少,下面有幾個咱們經常使用到的
. feat :新功能
. fix :修復bug
. doc : 文檔改變
. style : 代碼格式改變
. refactor :某個已有功能重構
.perf :性能優化
.test :增長測試
. build :改變了build工具 如 grunt換成了 npm
.revert: 撤銷上一次的 commit
scope :用來講明這次修改的影響範圍 能夠隨便填寫任何東西,commitizen也給出了幾個 如:location 、browser、compile,不過我推薦使用
all :表示影響面大 ,如修改了網絡框架 會對真個程序產生影響
loation: 表示影響小,某個小小的功能
module:表示會影響某個模塊 如登陸模塊、首頁模塊 、用戶管理模塊等等
subject: 用來簡要描述本次改動,概述就行了
body:具體的修改信息 應該儘可能詳細
footer:放置寫備註啥的,若是是 bug ,能夠把bug id放入
最後生成的 commit 信息大概是這樣的 簡潔又明瞭
那如今來說講第二種 :git 設置模板
步驟以下:
1.首先創建一個模板文件 最好直接在用戶根目錄下建(爲啥? 稍後解釋)
如:創建 vim .template_git
若是 按 i 編輯 ,輸入本身想要的規範 ,剛上面說了AngularJS的 commit規範很好,那咱們應該模擬它的
而後保存 推出
2.git config --global commit.templte 模板文件名, 個人模板文件是 .template_git 全部我直接
git config --global commit.template /Users/tao/.template_git (PS:必定要是絕對路徑,由於commit 的時候git會去到根據具體的路徑名去加載模板)
其中 --global 參數是爲了指明是全局配置git,就是影響你電腦上的全部git工程,固然你也能夠直接去對應的工程根目錄下
執行不帶 --global參數的命令 則只會影響當前工程 (仍是推薦全局 ,好東西要一塊兒用)
配置完成後 你直接在須要commit的時候輸入 git commit
而後會出來一些文本提示 只要你們都按照上面的格式填寫咱們就也能有和AngularJS同樣美觀的提交信息了 ,這裏有個按照AngularJS規範編寫的模板文件
能夠直接下載下來配置
PS:對於上面兩種方式 我的以爲 commitizen 無疑是利器了,能用盡可能用,但有些開發小夥伴可能對純命令的形式不太喜歡,或者就是不會git 命令
也有些正在使用 如sourceTree同樣有着界面的git工具,這個時候就能夠採用 git 配置模板的方式了, 因爲sourceTree默認也會去加載git全局配置的
commit模板(全局配置的重要性),並且這個配置文件還只能在當前用戶根目錄的下,這也是爲何上面說要在用戶根目錄下建配置文件的緣由