git分支管理及git commit message規範

分支管理

manage-flow

如圖所示: master分支只用於存放線上版本 線上緊急bug,使用hot-fix分支 開發在dev分支上,小的測試bug也可在dev分支修改。線上緊急修復bug也需合併到dev分支 開發複雜的新功能可新建分支dev-${devName}webpack

Git Commit message 規範

使用Angular的Commit message 格式git

commit message 格式

每一個commit message 包括header,body和footer,各佔一行,每行不超過100字符。其中header由type、scope和subject組成。header必需要寫,header的scope是可選的。github

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
複製代碼

Revert

若是commit用於撤銷以前的commit,需以revert:開頭,接着寫被撤銷的commit的header。body裏要寫:this reverts commit . ,hash爲被撤銷的commit的hash值。這種格式也能夠由git revert命令自動生成。web

Type

必須爲下列之一:npm

  • feat:新功能(feature)
  • fix:修補bug
  • docs:文檔修改
  • style: 不影響代碼含義的修改(例如:white-space; 格式化等)
  • refactor:重構(即不是新增功能,也不是修改bug的代碼變更)
  • perf: 提高性能的修改
  • test:增長或修改測試
  • chore:構建流程或輔助工具的變更

Scope

scope用於說明commit修改的範圍,好比數據層、控制層、視圖層,route, component, utils, build等等。若是修改影響多處,可以使用"*"。json

Subject

Subject是對修改的簡要說明:bash

  • 使用祈使語氣,通常如今時。
  • 首字母小寫
  • 句末不要使用句號

Body

使用祈使語氣,通常如今時。另外,body須要包含修改的緣由和與以前版本的區別。工具

Footer

任何Breaking changes的信息或者關閉issue的信息均可寫在Footer. Breaking changes須要以 BREAKING CHANGE: 開頭。性能

以下爲個人2條提交記錄:測試

commit 9fb447d73c637cfa128b57a84d95dc72bb14412b (HEAD -> master)
Author: zhongjx <amy_zhjx@163.com>
Date:   Wed Dec 26 18:22:53 2018 +0800

    refactor(*): 使用prettier格式化代碼
    
    使用eslint+prettier取代以前的eslint+airbnb規範

commit a4a5e9259d5dd4f5f4d3d16fea3392df2a877ee1 (origin/master)
Author: zhongjx <amy_zhjx@163.com>
Date:   Tue Nov 20 09:49:27 2018 +0800

    chore: 添加commit msg格式要求

複製代碼

更多例子能夠查看angular.js的commits

在webpack中配置使用

安裝

npm i --save-dev @commitlint/cli @commitlint/config-conventional husky
複製代碼

husky是可以阻止不知足要求的git commit, git push或其餘命令沒法執行。 經過以下配置:

{
    "husky": {
      "hooks": {
        "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
      }
  },
}
複製代碼

每次在提交時都會校驗是否知足規定的commit msg方式。

standard version

Standard Version是一個能自動生成版本和CHANGELOG.md的npm包。

安裝

安裝依賴:

npm i --save-dev standard-version
複製代碼

在package.json中添加運行腳本:

{
  "scripts": {
    "release": "standard-version"
  }
}
複製代碼

執行npm run release會自動生成CHANGELOG.md,並生成一個commit記錄和tag一個新的發佈。

首次發佈

只需運行

npm run release -- --first-release
// 或者
standard-version --first-release
複製代碼

這會生成一個發佈tag,但不會在package.json中修改版本。

發佈一個pre-release

使用--prerelease來生成預發佈: 假設當前版本是1.0.0,且將要commit的代碼爲打補丁的修改。運行:

npm run release -- --prerelease
複製代碼

將生成版本號1.0.1-0。 若是想指定預發佈版本名字能夠經過--rerelease <name>。 例如:

npm run release -- --prerelease alpha
複製代碼

這個tag將是1.0.1-alpha.0

發佈指定的類型

使用--release-as 加參數major或minor或patch能夠取消自動生成版本號。 假設當前版本爲1.0.0.運行

//  npm run script
npm run release -- --release-as minor
//  Or
npm run release -- --release-as 1.1.0
複製代碼

將生成版本號1.1.0,而不是自動生成的版本號1.0.1

相關文章
相關標籤/搜索