Git 如何寫出優雅的Commit Message

對於怎麼寫Git Commit 信息,每一個人都有本身的見解,每一個團隊也有本身的規定。這並無一個明確的標準,今天也不是來討論標準,而是介紹一個相對優雅的方式。css

[ac7536f1f] update some files
[cdc6708ad] change style [93d4b716d] remove css files [dfb928e85] update readme 複製代碼

以前,我寫提交信息的時候,只會寫主題信息。可能這樣寫的弊端你們也看到了,以後會看這些message的時候,並不知道這些提交究竟是什麼功能的。甚至有偷懶的同窗可能會直接這麼寫 [52a9e19] Update ,能看懂這個commit messageupdate什麼嗎?可能在過段時間,這位同窗也不知道是提交的什麼了。java

對於Git Commit Message並明確的標準,但也有一些好的原則:webpack

  • 使提交信息業務相關
  • 提交信息中寫明類型
  • 必要時要寫描述(Decription)
  • 提交主題儘可能簡短
  • 儘可能使用英文

使提交信息業務相關

本文開頭的第一個代碼片斷是我以前提交的提交記錄,如今來看的話,我已經不知道我寫了什麼?若是要知道到底提交了什麼,涉及哪些功能,也只有藉助版本工具了。git

提交信息和代碼同樣,不僅是給本身看,也是給團隊中其餘人看的,同時也是對提交信息的註釋。在我過往經歷中,看到過不少小夥伴爲了方便隨便寫提交信息。修復一個登錄問題,提交信息卻只寫了Fix bug。這就致使了對於代碼的回溯和問題排查十分困難,時間久了甚至只能一個一個Commit的排查。要記住一點:提交信息不僅是給本身看的,也是給團隊看的web

示例

使用編輯器

實現單點登錄接口工具

替代

實現新功能測試

有個小建議,你們能夠在提交代碼的時候,若是實在是想不到,能夠直接使用需求描述做爲提交信息。flex

提交信息中寫明類型

先來對提交代碼的緣由進行分類,大體能夠分爲幾類:新功能、代碼升級或變動、Bug修復、文檔編寫、主題UI變動和測試用例。提交代碼的緣由不外乎就是這幾種,因此如今給這些緣由相應加上一個標識,就變成了以下列表。url

  • Feat: 新功能
  • Upgrade:功能升級或代碼變動
  • Fix: Bug修復
  • Doc: 文檔或README編寫
  • Style: 主題UI變動
  • Test:新增測試代碼

示例

使用

Feat:實現單點登錄接口

替代

實現單點登錄接口

提交信息儘可能簡短

想象一下,若是一條提交信息有幾十個甚至近百個字,是否是很累。做爲一個能偷懶就偷懶的程序猿,固然不可能寫這麼長的提交信息的。只要在可以正確表達出本次提交所表明含義的狀況下,字數儘可能少,最好不超過50個字符

示例

使用

Feat:實現單點登錄接口

替代

實現單點登錄接口,並修改了Login.java...(此處省略100字)

篇幅緣由,錯誤示例就用省略號(…)來代替。能夠看到綠色示例已經正確可以表達本次提交的主題了,因此徹底沒有必要寫這麼多字。

必要時要寫描述(Decription)

描述是對提交信息的補充說明或詳細描述,這部份內容不多有同窗會注意到。但有時候描述卻也不可缺乏,好比說當合並代碼存在衝突的時候,提交者就有必要將發生衝突的文件寫在描述信息裏面。

描述信息能夠分爲多行,能夠在第72個字符的地方進行換行。

示例

使用

Upgrade: Update meta

  • update contributors
  • update eslint
  • update jest
  • update webpack

替代

Upgrade: Update meta

儘可能使用英文

有人會說中文本就是母語,爲何不建議使用中文。在團隊開發中,使用中文可以表達的更清楚明白。且一個團隊裏面,並非全部的人英文都很好,若是要使用英文則須要保證你寫的提交信息其餘人也能看懂,不然就會拔苗助長了。

你們或多或少都使用過Windows來進行開發,當使用過 cmd來查看git log的時候,中文是亂碼的。這實在是太不友好,若是要正常顯示還要一頓騷操做。這也就是爲何建議儘可能使用英文了。

Cmd Git log 亂碼
Cmd Git log 亂碼

其實還有一個緣由,若是咱們寫一個開源項目的話,提交到GitHub上面就是面向全世界的開發者,那麼提交信息使用英文就十分友好了(說不定項目就火了呢)。

英文信息格式

若是要使用英文,那麼就得注意一下提交的文本格式。英文的大小寫和符號有無都會影響提交信息的美觀。那咱們就要對英文格式作一些約束。

  • 語句的首字母使用大寫字符
  • 語句結尾不要有句號(.)

示例

使用

Fix: Fix can't login bug

替代

Fix:修復不能登陸的bug

文章持續更新,掃描下方二維碼關注公衆號第一時間閱讀

本文首發於: https://baozi.fun/2020/07/10/write-elegant-commit-message

本文使用 mdnice 排版

相關文章
相關標籤/搜索