Git Message能引發極度溫馨?

總有理由

本人半強迫症患者一枚,看到各類提交fix bug xxx,甚至連xxx都沒有,在回溯問題的時候一頭霧水,只能逐個文件找問題。難。。。react

因此我的認爲Git Message成爲回溯問題的一個迅速肯定問題的關鍵。git

那什麼樣的Message是優秀的呢? 原則又是什麼呢?就拿咱們一直團隊實踐的準則來講一說。github

提交代碼有原則(粒度)

項目代碼穩定以後,每次提交都要考慮提交的粒度問題,儘可能作到 baby stepexpress

  • 沒有關聯的代碼不能一次commit提交
  • 關聯代碼一次提交;若內容不少,可內部分層,依次提交

能夠根據當前代碼模塊狀況處理。bash

必須提交Commit Message

  • 沒有Commit Message 固然不能提交
  • 不在 git commit 上增長 -m <msg>--message=<msg> 參數,而單獨寫提交信息

不推薦ide

git commit -m "Fix login bug"
複製代碼

推薦工具

angular的GitHub的Commitui

Fix(filterFilter): fix filtering using an object expression when the …
…filter value is undefined

Fixes #10419
Closes #10424
複製代碼

Commit Message分段寫

Commit Message 分三個部分, header, body, footer. 其中,header 是必需的,body 和 footer 能夠省略。 無論是哪個部分,任何一行都不得超過100個字符,以避免影響閱讀性。this

[<team>]<type>(<scope>): <subject>

<body>

<footer>&emsp;
複製代碼
[FE]Fix(card): fix card edit, support to unuse item

在card修改裏面,添加配置item未使用功能
複製代碼

header

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

type

用於說明 commit 的類別,只容許使用下面7個標識。

Add:新加功能

Fix:修補bug

Modify:移除無用代碼

Remove:移除第三方模塊或者移除文件

Update:更新第三方模塊

Style: 格式(不影響代碼運行的變更)

Chore:構建過程或輔助工具的變更
複製代碼

scope

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

例如在shrezone,能夠是file, card, image, short_video等。

若是你的修改影響了不止一個scope,你可使用*代替。

team

當不一樣的team一塊兒編寫代碼的時候,帶team以區分工做區域

subject

subject是 commit 目的的簡短描述,不超過50個字符。

其餘注意事項:

以動詞開頭,使用第一人稱如今時,好比change,而不是changed或changes

第一個字母小寫

結尾不加句號(.)
複製代碼

Body

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

好比react的提交

Sync out another jsx transform test.

We added this test internally and it never got added here. We haven't broken it with any transforms *yet* but it's still good to actually run all of our tests
here too.
複製代碼

注意點:

使用第一人稱如今時,好比使用change而不是changed或changes。

要和header之間有一個空行

應該說明代碼變更的動機,以及與之前行爲的對比。
複製代碼

Footer

Footer 部分只用於如下兩種狀況:

不兼容變更

若是當前代碼與上一個版本不兼容,則 Footer 部分以BREAKING CHANGE開頭,後面是對變更的描述、以及變更理由和遷移方法。

關閉 Issue

若是當前 commit 針對某個issue,那麼能夠在 Footer 部分關閉這個 issue 。

Revert

一種特殊狀況,若是當前 commit 用於撤銷之前的 commit,則必須以revert:開頭,後面跟着被撤銷 Commit 的 Header。

revert: feat(pencil): add ‘graphiteWidth‘ option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02
複製代碼

最後

固然在不少時候,也不能每次都按照規範來寫Commit Message,可是最起碼每次重要的提交都能寫,關鍵時候有用。

固然有人會用打tag的方式來代表重要節點,可是畢竟物盡其用,個有所長。

若是愛好使用工具的朋友也能夠自行研究:

相關文章
相關標籤/搜索