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


      不知道大家有沒有看過自己項目的git 提交信息-----我看過好多次 ,不忍直視  然后提醒一起的小伙伴 :大家規范點 信息要詳細,

過段時間再看下 ,還是一樣。

     相信很多猿都有這樣的感受,對於垃圾的提交信息深惡痛絕,特別是那些提交信息為 "fix bug"的commit,SO, 如果提交的時候能有

些填寫規范的提示  或者高級點有交互式的約束就好了。

     這里給出兩種方案,也是業界比較通用的  

       1. commitizen 交互式約束命令 提交  

       2.配置git commit 模板 

 

    先來介紹第一種:(基於MAC OS 安裝)

    知名前端web項目AngularJS的提交記錄在業內被許多人稱贊,其規范同時也逐漸被大家引用,為了把這些規范實際應用到項目中,我

們就需要 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模板(全局配置的重要性),而且這個配置文件還只能在當前用戶根目錄的下,這也是為什么上面說要在用戶根目錄下建配置文件的原因

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM