日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
你可能會忽略的Git提交規(guī)范

一直是 ESLint 的忠實(shí)用戶,深知規(guī)范的重要性。然而,在新項(xiàng)目交接中,我被 Git Commit 規(guī)范逼瘋了。才意識到自己的疏忽,于是便有了一探究竟的想法。

目前創(chuàng)新互聯(lián)建站已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、昆都侖網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、為什么需要規(guī)范?

無規(guī)矩不成方圓,編程也一樣。

如果你有一個項(xiàng)目,從始至終都是自己寫,那么你想怎么寫都可以,沒有人可以干預(yù)你??墒侨绻趫F(tuán)隊(duì)協(xié)作中,大家都張揚(yáng)個性,那么代碼將會是一團(tuán)糟,好好的項(xiàng)目就被糟踐了。不管是開發(fā)還是日后維護(hù),都將是災(zāi)難。

這時候,有人提出了何不統(tǒng)一標(biāo)準(zhǔn),大家都按照這個標(biāo)準(zhǔn)來。于是 ESLint,JSHint 等代碼工具如雨后春筍般涌現(xiàn),成為了項(xiàng)目構(gòu)建的必備良品。

Git Commit 規(guī)范可能并沒有那么夸張,但如果你在版本回退的時候看到一大段糟心的 Commit,恐怕會懊惱不已吧。所以,嚴(yán)格遵守規(guī)范,利人利己。

二、具體規(guī)則

先來看看公式:

 
 
 
  1. ():  

type

用于說明 commit 的類別,只允許使用下面7個標(biāo)識。

  • feat:新功能(feature)
  • fix:修補(bǔ)
  • bugdocs:文檔(documentation)
  • style: 格式(不影響代碼運(yùn)行的變動)
  • refactor:重構(gòu)(即不是新增功能,也不是修改bug的代碼變動)
  • test:增加測試
  • chore:構(gòu)建過程或輔助工具的變動

scope

用于說明 commit 影響的范圍,比如數(shù)據(jù)層、控制層、視圖層等等,視項(xiàng)目不同而不同。

subject

是 commit 目的的簡短描述,不超過50個字符。

  1. 以動詞開頭,使用***人稱現(xiàn)在時,比如change,而不是changed或changes
  2. ***個字母小寫
  3. 結(jié)尾不加句號(.)

三、異常處理

我們先來看看這個異常提醒:

 
 
 
  1. INVALID COMMIT MSG: does not match "(): " ! 
  2. jartto:fix bug 

這里之所以報(bào)出這個警告,是因?yàn)槲业奶峤怀霈F(xiàn)了兩個問題:

  • 其一,使用了規(guī)范外的關(guān)鍵字;
  • 其二,很細(xì)節(jié)的問題,jartto:后少了空格;

這時候我才回憶起來,當(dāng)時提交一直失敗,情急之下直接強(qiáng)制提交,所以以后的提交都會抱出這個異常。大致意思就是:

  • 你的之前的 Commit 不合格~你的之前的 Commit 不合格~你的之前的 Commit 不合格

這時候就很煩了,我們只能去將之前的錯誤修正,那么如何操作呢?

四、如何修改之前的 commit 信息?

其實(shí)并不復(fù)雜,我們只需要這樣做:

1、將當(dāng)前分支無關(guān)的工作狀態(tài)進(jìn)行暫存

 
 
 
  1. git stash 

2、將 HEAD 移動到需要修改的 commit 上

 
 
 
  1. git rebase 9633cf0919^ --interactive 

3、找到需要修改的 commit ,將首行的 pick 改成 edit

4、開始著手解決你的 bug

5、 git add 將改動文件添加到暫存

6、 git commit –amend 追加改動到提交

7、git rebase –continue 移動 HEAD 回***的 commit

8、恢復(fù)之前的工作狀態(tài)

 
 
 
  1. git stash pop 

大功告成,是不是想把整個 Commit 都修改一遍,逃~

五、項(xiàng)目中使用

這時候問題又來了,為什么我提交的時候會有警告,這個又是如何做到的呢?

這時候,我們需要一款 Node 插件 validate-commit-msg 來檢查項(xiàng)目中 Commit message 是否規(guī)范。

1.首先,安裝插件:

 
 
 
  1. npm install --save-dev validate-commit-msg 

2.使用方式一,建立 .vcmrc 文件:

 
 
 
  1.   "types": ["feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert"], 
  2.   "scope": { 
  3.     "required": false, 
  4.     "allowed": ["*"], 
  5.     "validate": false, 
  6.     "multiple": false 
  7.   }, 
  8.   "warnOnFail": false, 
  9.   "maxSubjectLength": 100, 
  10.   "subjectPattern": ".+", 
  11.   "subjectPatternErrorMsg": "subject does not match subject pattern!", 
  12.   "helpMessage": "", 
  13.   "autoFix": false 

3.使用方式二:寫入 package.json

 
 
 
  1.   "config": { 
  2.     "validate-commit-msg": { 
  3.       /* your config here */ 
  4.     } 
  5.   } 

4.可是我們?nèi)绻胱詣邮褂?ghooks 鉤子函數(shù)呢?

 
 
 
  1.   … 
  2.   "config": { 
  3.     "ghooks": { 
  4.       "pre-commit": "gulp lint", 
  5.       "commit-msg": "validate-commit-msg", 
  6.       "pre-push": "make test", 
  7.       "post-merge": "npm install", 
  8.       "post-rewrite": "npm install", 
  9.       … 
  10.     } 
  11.   } 
  12.   … 

在 ghooks 中我們可以做很多事情,當(dāng)然不只是 validate-commit-msg 哦。

更多細(xì)節(jié)請參考:validate-commit-msg

六、Commit 規(guī)范的作用

  1. 提供更多的信息,方便排查與回退;
  2. 過濾關(guān)鍵字,迅速定位;
  3. 方便生成文檔;

七、生成 Change log

正如上文提到的生成文檔,如果我們的提交都按照規(guī)范的話,那就很簡單了。生成的文檔包括以下三個部分:

  • New features
  • Bug fixes
  • Breaking changes.

每個部分都會羅列相關(guān)的 commit ,并且有指向這些 commit 的鏈接。當(dāng)然,生成的文檔允許手動修改,所以發(fā)布前,你還可以添加其他內(nèi)容。

這里需要使用工具 Conventional Changelog 生成 Change log :

 
 
 
  1. npm install -g conventional-changelog 
  2. cd jartto-domo 
  3. conventional-changelog -p angular -i CHANGELOG.md -w 

為了方便使用,可以將其寫入 package.json 的 scripts 字段。

 
 
 
  1.   "scripts": { 
  2.     "changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0" 
  3.   } 

這樣,使用起來就很簡單了:

 
 
 
  1. npm run changelog 

到這里,我們所有的問題都搞明白了,Cheers~

八、總結(jié)

看完文章,你還會如此放蕩不羈嗎?你還會隨心所欲的編寫 Commit 嗎?你還會如此 git commit -m "hello jartto"提交嗎?

答案是否定的,因?yàn)槭褂昧算^子函數(shù),你沒有機(jī)會了,否則將是無窮無盡的恢復(fù) Commit。這倒可以養(yǎng)成良好的提交習(xí)慣~~


當(dāng)前標(biāo)題:你可能會忽略的Git提交規(guī)范
URL標(biāo)題:http://www.dlmjj.cn/article/cdohdeo.html