聽說,80%的程序員,不會寫commit記錄。這個比例在無規範的小公司,比例會更高一些,能夠看到這是一個多麼廣泛的問題。前端
程序員應該寫出簡潔明瞭的commit log
,不然對別人和本身來講就是一種困擾。最近代碼review多了,總有一股想笑的感受。就像下圖這滿屏的ok,永遠沒法從中得知提交人的意圖。git
commit log將如何提交?都有哪些約定?實際上是有答案的。對於Java程序員,尤爲幸福。IDEA有一個很是好用的插件,能夠用來輔助你進行代碼提交,輔助你進行團隊規範建設。接下來,我將帶你們看一看它的使用方法。程序員
在IDEA的Marketplace
中,搜索Git Commit Template
,就能夠安裝這個插件。插件很小,很快就能下載下來。github
正常從IDEA提交代碼的時候。咱們發現多了一個小按鈕。npm
點擊以後,將彈出一個窗口。讓你去設計提交模板。後端
這麼多信息,真的讓人頭暈。怪不得程序員們都不喜歡寫提交記錄。設計模式
其實,在插件的安裝界面,就已經說明了這個提交記錄的格式。緩存
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer> 複製代碼
從描述中,能夠肯容易的看到一個提交記錄中,應該包含哪些東西。其中類型最多的,固然是提交類型。性能優化
咱們按照插件顯示的順序來講明一下。bash
feat
功能feature
的意思,也是最經常使用的。當你的功能有變動的時候,均可以採用這種類型的typefix
固然指的是bug修復docs
更新了文檔,或者更新了註釋style
代碼格式調整,好比執行了format、更改了tab顯示等refactor
重構代碼。指的是代碼結構的調整,好比使用了一些設計模式從新組織了代碼perf
對項目或者模塊進行了性能優化。好比一些jvm的參數改動,把stringbuffer改成stringbuilder等test
這個簡單,就是增長了單元測試和自動化相關的代碼build
影響編譯的一些更改,好比更改了maven插件、增長了npm的過程等ci
持續集成方面的更改。如今有些build系統喜歡把ci功能使用yml描述。若有這種更改,建議使用cichore
其餘改動。好比一些註釋修改或者文件清理。不影響src和test代碼文件的,均可以放在這裏revert
回滾了一些前面的代碼除了這些預設的,團隊還能夠按照本身的需求,增長新的type
。好比專門處理線上工單,就能夠創造一個叫作ticket
的類型。
scope是範圍的意思,主要指的是代碼的影響面。scope並無要求強制,但團隊能夠按照本身的理解進行設計。一般由技術維度和業務維度兩種劃分方式。好比按照技術分爲:controller
、dto
、service
、dao
等。但由於一個功能提交,會涉及到多個scope(都不喜歡很是細粒度的提交),因此按照技術維度分的狀況比較少。
按照業務模塊進行劃分,也是比較不錯的選擇。好比分爲user
、order
等劃分,能夠很容易看出是影響用戶模塊仍是order模塊。
若是你實在不知道怎麼填,那就留空。
這個體現的是總結歸納能力,沒得跑。一句話可以說明主要的提交是什麼。subject也是衆多git管理工具默認顯示的一行。若是你寫的標準,那麼提交記錄看起來就很漂亮很規整。
主要填寫詳細的改動記錄。我通常習慣列上1234,但若是你的subject寫的很是好,正文能夠直接弱化。但若是時間充裕,填寫上重要記錄的來龍去脈,需求背景,是一個好的習慣。
添加一些額外的hook,好比提交記錄以後,自動關閉jira的工單(JIRA和gitlab等是能夠聯動的)。在好比觸發一些文檔編譯或者其餘動做。
這部分自定義行也是比較強的。
最後還有一個skip CI選項。通常的ci工具,均可以設置提交代碼時自動觸發編譯。但你能夠告訴它忽略本次提交。這多是由於你提早預判到了一些構建風險,或者就是不想編譯。
最後,看一個典型的提交記錄,有了工具的支持,咱們的瞎扯也看得正經起來。
fix(order): 修復了1分錢買汽車的bug 商務反饋能夠1分錢買汽車,目前已經賣出了100w量 Closes #2455 [skip ci] 複製代碼
其實,提交的核心是type
和subject
。一個用來表示它的提交類型,一個用來對提交進行歸納性總結,寫好了這兩點,就能輕輕鬆鬆秒殺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...