老鳥都應該注意的git 提交規範

      不知道你們有沒有看過本身項目的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模板(全局配置的重要性),並且這個配置文件還只能在當前用戶根目錄的下,這也是爲何上面說要在用戶根目錄下建配置文件的緣由

相關文章
相關標籤/搜索