80%的程序員,不會寫commit記錄

聽說,80%的程序員,不會寫commit記錄。這個比例在無規範的小公司,比例會更高一些,能夠看到這是一個多麼廣泛的問題。前端

程序員應該寫出簡潔明瞭的commit log,不然對別人和本身來講就是一種困擾。最近代碼review多了,總有一股想笑的感受。就像下圖這滿屏的ok,永遠沒法從中得知提交人的意圖。git

commit log將如何提交?都有哪些約定?實際上是有答案的。對於Java程序員,尤爲幸福。IDEA有一個很是好用的插件,能夠用來輔助你進行代碼提交,輔助你進行團隊規範建設。接下來,我將帶你們看一看它的使用方法。程序員

安裝插件

在IDEA的Marketplace中,搜索Git Commit Template,就能夠安裝這個插件。插件很小,很快就能下載下來。github

image-20210302104937753.png

正常從IDEA提交代碼的時候。咱們發現多了一個小按鈕。npm

image-20210302105333440.png

點擊以後,將彈出一個窗口。讓你去設計提交模板。後端

image-20210302105450485.png

這麼多信息,真的讓人頭暈。怪不得程序員們都不喜歡寫提交記錄。設計模式

其實,在插件的安裝界面,就已經說明了這個提交記錄的格式。緩存

<type>(<scope>): <subject>
 <BLANK LINE>
 <body>
 <BLANK LINE>
 <footer>
複製代碼

從描述中,能夠肯容易的看到一個提交記錄中,應該包含哪些東西。其中類型最多的,固然是提交類型。性能優化

提交類型Type

咱們按照插件顯示的順序來講明一下。bash

  • feat 功能feature的意思,也是最經常使用的。當你的功能有變動的時候,均可以採用這種類型的type
  • fix 固然指的是bug修復
  • docs 更新了文檔,或者更新了註釋
  • style 代碼格式調整,好比執行了format、更改了tab顯示等
  • refactor 重構代碼。指的是代碼結構的調整,好比使用了一些設計模式從新組織了代碼
  • perf 對項目或者模塊進行了性能優化。好比一些jvm的參數改動,把stringbuffer改成stringbuilder等
  • test 這個簡單,就是增長了單元測試和自動化相關的代碼
  • build 影響編譯的一些更改,好比更改了maven插件、增長了npm的過程等
  • ci 持續集成方面的更改。如今有些build系統喜歡把ci功能使用yml描述。若有這種更改,建議使用ci
  • chore 其餘改動。好比一些註釋修改或者文件清理。不影響src和test代碼文件的,均可以放在這裏
  • revert 回滾了一些前面的代碼

除了這些預設的,團隊還能夠按照本身的需求,增長新的type。好比專門處理線上工單,就能夠創造一個叫作ticket的類型。

範圍scope

scope是範圍的意思,主要指的是代碼的影響面。scope並無要求強制,但團隊能夠按照本身的理解進行設計。一般由技術維度和業務維度兩種劃分方式。好比按照技術分爲:controllerdtoservicedao等。但由於一個功能提交,會涉及到多個scope(都不喜歡很是細粒度的提交),因此按照技術維度分的狀況比較少。

按照業務模塊進行劃分,也是比較不錯的選擇。好比分爲userorder等劃分,能夠很容易看出是影響用戶模塊仍是order模塊。

若是你實在不知道怎麼填,那就留空。

其餘

主題subject

這個體現的是總結歸納能力,沒得跑。一句話可以說明主要的提交是什麼。subject也是衆多git管理工具默認顯示的一行。若是你寫的標準,那麼提交記錄看起來就很漂亮很規整。

正文Body

主要填寫詳細的改動記錄。我通常習慣列上1234,但若是你的subject寫的很是好,正文能夠直接弱化。但若是時間充裕,填寫上重要記錄的來龍去脈,需求背景,是一個好的習慣。

尾部Footer

添加一些額外的hook,好比提交記錄以後,自動關閉jira的工單(JIRA和gitlab等是能夠聯動的)。在好比觸發一些文檔編譯或者其餘動做。

這部分自定義行也是比較強的。

Skip CI

最後還有一個skip CI選項。通常的ci工具,均可以設置提交代碼時自動觸發編譯。但你能夠告訴它忽略本次提交。這多是由於你提早預判到了一些構建風險,或者就是不想編譯。

End

最後,看一個典型的提交記錄,有了工具的支持,咱們的瞎扯也看得正經起來。

fix(order): 修復了1分錢買汽車的bug

商務反饋能夠1分錢買汽車,目前已經賣出了100w量

Closes #2455

[skip ci]
複製代碼

其實,提交的核心是typesubject。一個用來表示它的提交類型,一個用來對提交進行歸納性總結,寫好了這兩點,就能輕輕鬆鬆秒殺80%的程序員了。

有了這些基礎,從commit log,自動生成change log,就變的很是的容易。配合持續集成平臺,自動生成發版的變動記錄,也是可行的,這也是爲何團隊管理,都在一直強調git的提交規範。由於它確實很是有用。

開源一套以教學爲目的系統,歡迎star: github.com/xjjdog/bcma…。它包含ToB複雜業務、互聯網高併發業務、緩存應用;DDD、微服務指導。模型驅動、數據驅動。瞭解大型服務進化路線,編碼技巧、學習Linux,性能調優。Docker/k8s助力、監控、日誌收集、中間件學習。前端技術、後端實踐等。主要技術: SpringBoot+ JPA+ Mybatis-plus+ Antd+ Vue3

參考:《2020最新Java基礎精講視頻教程和學習路線!》
連接:https://juejin.cn/post/693976...

相關文章
相關標籤/搜索