分支管理
如圖所示:
master分支只用於存放線上版本
線上緊急bug,使用hot-fix分支
開發在dev分支上,小的測試bug也可在dev分支修改。線上緊急修復bug也需合併到dev分支
開發複雜的新功能可新建分支dev-${devName}
Git Commit message 規範
commit message 格式
每個commit message 包括header,body和footer,各佔一行,每行不超過100字元。其中header由type、scope和subject組成。header必須要寫,header的scope是可選的。
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
複製程式碼
Revert
如果commit用於撤銷之前的commit,需以revert:開頭,接著寫被撤銷的commit的header。body裡要寫:this reverts commit . ,hash為被撤銷的commit的hash值。這種格式也可以由git revert
命令自動生成。
Type
必須為下列之一:
- feat:新功能(feature)
- fix:修補bug
- docs:文件修改
- style: 不影響程式碼含義的修改(例如:white-space; 格式化等)
- refactor:重構(即不是新增功能,也不是修改bug的程式碼變動)
- perf: 提升效能的修改
- test:增加或修改測試
- chore:構建流程或輔助工具的變動
Scope
scope用於說明commit修改的範圍,比如資料層、控制層、檢視層,route, component, utils, build等等。如果修改影響多處,可使用"*"。
Subject
Subject是對修改的簡要說明:
- 使用祈使語氣,一般現在時。
- 首字母小寫
- 句末不要使用句號
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