Commit message 代碼提交規範

Commit message 代碼提交規範
**
前言
**
在多人協做項目中,若是代碼風格統1、代碼提交信息的說明準確,那麼在後期協做以及Bug處理時會更加方便。Git 每次提交代碼,都要寫 Commit message(提交說明),不然就不容許提交。通常來講,commit message 應該清晰明瞭,說明本次提交的目的。node

Commit message 的做用git

● 提供更多的歷史信息,方便快速瀏覽
● 過濾某些commit(好比文檔改動),便於快速查找信息
● 直接從commit生成Change log
● 可讀性好,清晰,沒必要深刻看代碼便可瞭解當前commit的做用。
● 爲 Code Reviewing(代碼審查)作準備
● 方便跟蹤工程歷史
● 提升項目的總體質量,提升我的工程素質
Commit message 的格式npm

Commit message 包括三個部分:Header,Body 和 Footerjson

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

1、Header工具

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

(1)type性能

​ type用於說明 commit 的類別,只容許使用下面的標識單元測試

feat:新增功能(feature)
    fix:修補bug
    docs:僅僅修改了文檔,好比 README, CHANGELOG, CONTRIBUTE等等
    style: 僅僅修改了空格、格式縮進、逗號等等,不改變代碼邏輯
    refactor:重構(即不是新增功能,也不是修改bug的代碼變更)
    test:增長測試,包括單元測試、集成測試等
    chore:構建過程或輔助工具的變更
    type:表明某次提交的類型,好比是修復一個bug仍是增長一個新的feature。
    perf: 優化相關,好比提高性能、體驗
    revert: 回滾到上一個版本
    ci:自動化流程配置修改

注:若是type爲feat和fix,則該 commit 將確定出如今 Change log 之中測試

(2)scope優化

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

(3)subject命令行

①subject是 commit 目的的簡短描述,不超過50個字符。
②以動詞開頭,使用第一人稱如今時,好比change,而不是changed或changes
③第一個字母小寫
④結尾不加句號(.)

2、Body

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

3、Footer

Footer 部分只用於兩種狀況:

(1)不兼容變更

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

BREAKING CHANGE: isolate scope bindings definition has changed.

To migrate the code follow the example below:

Before:

scope: {
  myAttr: 'attribute',
}

After:

scope: {
  myAttr: '@',
}

 The removed `inject` wasn't generaly useful for directives so there should be no code using it.

(2)關閉 Issue

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

Closes #234

也能夠一次關閉多個 issue

Closes #123, #245, #992

4、Revert

若是當前 commit 用於撤銷之前的 commit,則必須以revert:開頭,後面跟着被撤銷 Commit 的 Header

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

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

①Body部分的格式是固定的,必須寫成This reverts commit .,其中的hash是被撤銷 commit 的 SHA 標識符。 ②若是當前 commit 與被撤銷的 commit,在同一個發佈(release)裏面,那麼它們都不會出如今 Change log 裏面。若是二者在不一樣的發佈,那麼當前 commit,會出如今 Change log 的Reverts小標題下面。

commit message工具
Commitizen是一個格式化commit message的工具。

**

使用
**

1.在cmd中經過npm來全局安裝:

npm install -g commitizen

2.在項目目錄下建立package.json文件

npm init

3.打開項目執行以下命令:

commitizen init cz-conventional-changelog --save --save-exact

注意:若是是第二次配置,須要用–force:

commitizen init cz-conventional-changelog --save --force

4.將未暫存文件全部變化提交到暫存區

git add .

① git add . :他會監控工做區的狀態樹,使用它會把工做時的全部變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。

②git add -u :他僅監控已經被add的文件(即tracked file),他會將被修改的文件提交到暫存區(git add --update的縮寫)。add -u 不會提交新文件。

③git add -a :是上面兩個功能的合集(git add --all的縮寫)

5.命令行輸入提交命令

git cz

輸入命令後依次提示:

①上、下鍵選擇要提交的更改類型

②此更改的範圍是什麼(例如組件或文件名)?(按回車鍵跳過)

③寫一個簡短的祈使句來描述這個變化

④提供更詳細的更改說明:(按回車鍵跳過)

⑤有什麼重大變化嗎?

⑥這一變化是否會影響
任何未解決的問題?

6.再推送到本地git倉庫
git push

注意:
    ① 代碼須要提測,而且本身都測試OK了,若是一次性測試經過則能夠把master合併到本身的分支,而後push本身的分支,進行提測
    ② 代碼提測了,若是有問題,把問題修改好後,再push本身的分支

打印日誌命令

git log

1.輸出CHANGELOG記錄,(文件名稱本身設置),經過如下命令,在項目中生成 CHANGELOG.md 文件

①安裝生成 Change log 的工具

$ npm install -g conventional-changelog-cli

② 經過提交記錄生成 CHANGELOG.md

$ conventional-changelog -p -i CHANGELOG.md -s

2.打印出 git log 的日誌記錄(詳細日誌記錄)

git log > 文件名

例如:git log >1.txt
在該項目路徑中可查看 1.txt 日誌記錄文件

type類型可自行配置

type是能夠本身配置和修改的,在項目路徑下的

node_modulesconventional-commit-typesindex.json

相關文章
相關標籤/搜索