在使用Git時(shí)你應(yīng)該這樣提交代碼
1. 前言
目前大部分公司都在使用 Git 作為版本控制,每個(gè)程序員每天都要進(jìn)行代碼的提交。很多開(kāi)發(fā)者也包括我自己,有時(shí)候趕時(shí)間或者圖省事,就這么提交:
- git commit -m "修改bug,優(yōu)化代碼"
過(guò)了一段,突然去查找一個(gè)具體的提交你會(huì)發(fā)現(xiàn)不是特別好找。因此我們需要規(guī)范我們的代碼提交來(lái)避免這種情況。同時(shí)良好的提交規(guī)范也有助于我們生成清晰的 ChangeLog,更利于同事之間的協(xié)作。
如果你想成為知名開(kāi)源項(xiàng)目的貢獻(xiàn)者更要規(guī)范自己的代碼提交。
2. Git 提交規(guī)范
目前業(yè)內(nèi)做的比較好的,比較具有參考價(jià)值的就是知名前端框架AngularJS的提交規(guī)范。我們先來(lái)看一個(gè)例子:
Git提交信息
對(duì)應(yīng)的格式:
- <type>[optional scope]: <description>
- # 空行
- [optional body]
- # 空行
- [optional footer]
更嚴(yán)格的項(xiàng)目可能提交要求使用英文描述,特別是國(guó)際化的開(kāi)源項(xiàng)目。
根據(jù)上面這個(gè)例子我們來(lái)了解一下這個(gè)業(yè)界比較認(rèn)可的 Git 提交規(guī)范。
type
refactor 表示本次提交的是重構(gòu)代碼,也就是它是一個(gè)提交的類型type,除了refactor還有:
- feat 新功能,顧名思義就是新需求的實(shí)現(xiàn)。
- fix 修復(fù),就是對(duì) bug 的修復(fù)。
- docs 文檔,主要用來(lái)描述文檔的變更。
- style 主要是代碼風(fēng)格相關(guān)的提交,比如格式化等。
- refactor 重構(gòu)代碼,對(duì)已有功能的重構(gòu),但是區(qū)別于 bugfix。
- test 測(cè)試相關(guān)的提交,不太常用。
- chore 構(gòu)建過(guò)程或輔助工具的變動(dòng),不太常用,比如之前用 Maven,后面換成了 Gradle。
每次提交聲明提交的type是必須的,它讓本次提交的作用一目了然。
scope(可選)
用來(lái)表明本次提交影響的范圍,方便快速定位。你可以寫(xiě)明影響的是哪個(gè)模塊(通常是模塊名稱)或者是哪個(gè)層(數(shù)據(jù)層、服務(wù)層、還是視圖層)。
subject
就是上面的修改版權(quán)信息,是對(duì)本次提交的簡(jiǎn)短描述概括。就像胖哥寫(xiě)文章要起一個(gè)標(biāo)題一樣,不要過(guò)長(zhǎng)。
body(可選)
就是比較詳細(xì)描述本次提交涉及的條目,羅列代碼功能,這里胖哥習(xí)慣用markdown的列表語(yǔ)法,也就是用中劃線換行隔開(kāi)條目。當(dāng)然body不是必選的,如果subject能夠描述清楚的話。
foot(可選)
描述與本次提交相關(guān)聯(lián)的break change或issue 。
break change
指明本次提交是否產(chǎn)生了破壞性修改,類似版本升級(jí)、接口參數(shù)減少、接口刪除、遷移等。如果產(chǎn)生了上述的影響強(qiáng)烈建議在提交信息中寫(xiě)明break change,有利于出問(wèn)題時(shí)快速定位,回滾,復(fù)盤(pán)。
issue
如果發(fā)現(xiàn)項(xiàng)目有 bug、或者有優(yōu)化的建議、甚至新增一個(gè)任務(wù),就可以利用issue給項(xiàng)目提交一個(gè)任務(wù)。
Git issue
issue不是一些 Git 平臺(tái)的專屬功能,JIRA 等平臺(tái)也有類似功能,它們的作用大同小異,都可以很好地反應(yīng)項(xiàng)目的成長(zhǎng)狀況和參與度。那么在 Git 提交時(shí),我們可以在foot區(qū)域關(guān)聯(lián)本次提交涉及的issue。
- # 涉及issues
- issues #F12YC,#F45JW
- # 關(guān)閉
- Closes #F12YC
這里沒(méi)有固定格式,不過(guò)盡量去參考一些知名項(xiàng)目去做。
3. 工具安利
說(shuō)了這么多,相信你已經(jīng)對(duì) Git 提交的規(guī)范有所了解了。這里推薦一些有用的工具來(lái)幫助你將這些規(guī)范落實(shí)到位。在Intellij IDEA的插件市場(chǎng)有很多 Git Commit Message 模板插件,可以可視化的實(shí)現(xiàn)這些規(guī)范。
Git提交信息插件
本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)小胖哥」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)小胖哥公眾號(hào)。