如何寫好 Commit Log?

其實關於這個問題,老早都想整理了,只是一直沒有騰出空來,最近恰好有空,索性整理了下。git

這裏就不過多介紹什麼是Git了,本文的重點是Commit Log,若是還不清楚Git是什麼,能夠看一下個人Git系列的其餘筆記。工具

爲何要關注提交信息

  1. 加快Reviewing Code的過程
  2. 提醒本身或他人,某個提交具體增長了什麼功能,改動了哪些地方
  3. 提升項目的總體質量

Angular 規範的 Commit message 格式

這種格式(規範)是我目前以爲相對其餘格式(規範)而言,最容易接受、上手的一種。性能

其核心是每次提交,Commit message 都包括三個部分:Header,Body 和 Footer。測試

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

其中,Header 是必需的,Body 和 Footer 能夠省略。code

Header

Header 部分只有一行,包括三個字段:type(必需)、scope(可選)和 subject(必需)。rem

type 用於說明 commit 的類別,只容許使用下面幾個標識:文檔

  • feat 新功能(feature)
  • fix 修補 bug
  • docs 文檔(documentation)
  • style 格式(不影響代碼運行的變更)
  • refactor 重構(即不是新增功能,也不是修改 bug 的代碼變更)
  • test 增長測試
  • chore 構建過程、輔助工具的變更
  • perf 提升性能
  • typo 打字錯誤

scope 用於說明 commit 影響的範圍,好比數據層、控制層、視圖層等等,視項目不一樣而不一樣。it

subjectcommit 目的的簡短描述,不超過 50 個字符。io

Body

Body 部分是對本次 commit 的詳細描述,能夠分紅多行。function

Footer

Footer 部分只用於不兼容變更和關閉 Issue。

總結

原本我本身一直使用的方式就是:git commit -am "fix login bug",雖然並無絕對的對錯,但這顯然不是最好的方式。

這種東西並無強制性的規定,只要團隊之間約定好,而後按照這個約定協做就行了。

因此我以爲在團隊之間commit時,能夠不用徹底按照Angular 規範的Commit message格式去提交,能夠按照如下約定來執行。

  • commit時,只用保留 Header 部分就好。
  • pull request時,才須要 Header、Body、Footer 這三部分。

另外commit時須要注意如下幾點:

  • 建立短小而明確的commit,一句話說清楚。
  • 一個小改動對應一次commit,不建議一大堆改動,一次commit
  • 若是添加的代碼會使項目發生極大的變化,那麼須要及時更新remade文件以向他人說明這次更改。

最佳實踐

docs: add FAQ in readme file
feat: increase user login function
fix: fix user login bug
相關文章
相關標籤/搜索