背景
Git每次提交代碼都需要寫commit message,否則就不允許提交。一般來說,commit message應該清晰明了,說明本次提交的目的,具體做了什么操作……但是在日常開發(fā)中,大家的commit message千奇百怪,中英文混合使用、fix bug等各種籠統(tǒng)的message司空見怪,這就導致后續(xù)代碼維護成本特別大,有時自己都不知道自己的fix bug修改的是什么問題。基于以上這些問題,我們希望通過某種方式來監(jiān)控用戶的git commit message,讓規(guī)范更好的服務于質量,提高大家的研發(fā)效率。
規(guī)范介紹
首先我們可以看下AngularJS 的規(guī)范,它是由 Google 推出的一套提交消息規(guī)范標準,也是目前使用范圍最廣的規(guī)范。有一套合理的手冊也較為系統(tǒng)化;并且還有配套的工具可以供我們使用。
說白了,規(guī)范就是用工具進行強約束。規(guī)范執(zhí)行方案如下:
既然有了方案,就會按照某些規(guī)則執(zhí)行,以下是 Google AnguarJS 規(guī)范的要求:
規(guī)范目標
允許通過腳本生成 CHANGELOG.md
可以通過范圍的關鍵詞,快速的搜索到指定版本
git log HEAD --grep feat(package.json) # 在package.json文件里新增的特性。
格式要求
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
消息只占用一行,任何行都不能超過 100 個字符
允許使用 GitHub 以及各種 Git 工具閱讀消息
提交消息由頁眉、正文和頁腳組成,由空行分隔
<type>
代表某次提交的類型,比如是修復一個 bug 或是增加一個 feature,類型如下:
<scope>
范圍可以是指定提交更改位置的任何內容,如:
對 package.json 文件新增依賴庫,chore(package.json): 新增依賴庫
或對代碼進行重構,refacto(weChat.vue): 重構微信進件
<subject>
如果沒有更合適的范圍,可以直接寫提交內容
規(guī)范建設
初期我們在互聯(lián)網上搜索了大量有關git commit規(guī)范的資料,但只有Angular規(guī)范是目前使用最廣的寫法,比較合理和系統(tǒng)化,并且有配套的工具(IDEA就有插件支持這種寫法)。最后綜合阿里巴巴高德地圖相關部門已有的規(guī)范總結出了一套git commit規(guī)范。
commit message格式
<type>(<scope>): <subject>
總結
編碼規(guī)范、流程規(guī)范在軟件開發(fā)過程中是至關重要的,它可以使我們在開發(fā)過程中少走很多彎路。Git commit規(guī)范也是如此,確實也是很有必要的,幾乎不花費額外精力和時間,但在之后查找問題的效率卻很高。作為一名程序員,我們更應注重代碼和流程的規(guī)范性,永遠不要在質量上將就。
首發(fā)地址:如何規(guī)范你的Git commit?