Git是最牛逼的開源分布式版本控制系統,日常開發中常用來管理代碼提交、恢復、追蹤,是團隊開發最常用的一個代碼管理工具。
在我們修改了代碼並且提交之前,常會使用git commit -m 'change’命令來描述我們代碼改動的內容,但是很多都不規范,隨處可見的 git commit -m ‘update’,以致於不能清晰地知道每次提交代碼的變更內容,所以需要一種規范來管理代碼提交的內容。
一、Git Commit message規范
常用的Git Commit message規范采用的是Angular 規范。
本文參考阮老師的文章介紹:
http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html.
Angular規范中定義的格式有3個內容:
Header
Body
Footer
1、 Header
Header部分有3個字段: type(必需), scope(可選), subject(必需)
type(必需) : Type of change:commit的類別; scope(可選):Scope of this change:此次commit的影響模塊; subject(必需):Short description:簡短的描述此次代碼變更的主要內容
(1)type
type用於說明commit的類別,常用的標識如下:
feat:新功能(feature)
fix:修補bug
docs:文檔(documentation)
style: 格式(不影響代碼運行的變動,空格,格式化,等等)
refactor:重構(即不是新增功能,也不是修改bug的代碼變動
perf: 性能 (提高代碼性能的改變)
test:增加測試或者修改測試
build: 影響構建系統或外部依賴項的更改(maven,gradle,npm 等等)
ci: 對CI配置文件和腳本的更改
chore:對非 src 和 test 目錄的修改
revert: Revert a commit
最常用的就是feat合fix兩種type;
(2)scope
scope用於說明 commit 影響的范圍,比如數據層、控制層、視圖層等等,視項目不同而不同。
(3)subject
subject是 commit 目的的簡短描述,不超過50個字符,主要介紹此次代碼變更的主要內容。
舉個例子:
eg: feat(訂單模塊):訂單詳情接口增加訂單號字段
其中, feat對應type字段;訂單模塊對應scope(若果scope有內容,括號就存在);“訂單詳情接口增加訂單號字段”對應subject,簡要說明此次代碼變更的主要內容。
2、Body
Body 部分是對本次 commit 的詳細描述,可以分成多行。
如:
(1)增加訂單號字段;
(2)增加了訂單退款接口;
日常項目開發中,如果Header中subject已經描述清楚此次代碼變更的內容后,Body部分就可以為空。
3、Footer
(1)不兼容變動
(2)關閉 Issue
日常項目中開發,Footer不常用,可為空。
4、Revert
若需要撤銷上一次的commit,header部分為:revert: 上一次commit的header內容;
body部分為:This reverts commit xxx,xxx是上一次commit對應的SHA 標識符。
二、IDEA插件Git Commit Template使用
在iTerm中使用命令行的方式提交代碼,我們可以使用Commitizen來撰寫合格的 Commit message,具體使用見:http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html。
本文主要介紹如何使用IDEA中的插件Git Commit Template來撰寫Commit message。
首先安裝和下載插件Git Commit Template
安裝后重啟IDEA,更改代碼,點擊IDEA中的VCS版本控制按鈕:
點擊Commit按鈕:
選擇Type,填寫相應內容,最后點擊提交即可:
參考:http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html