git 工作流和git commit规范
目的
- 統(tǒng)一團(tuán)隊(duì)的Git工作流,包括分支使用、tag規(guī)范、issue等
- 統(tǒng)一團(tuán)隊(duì)的Git Commit日志標(biāo)準(zhǔn),便于后續(xù)代碼review,版本發(fā)布以及日志自動化生成
git工作流
-
git flow工作流:
- master為主分支,屬保護(hù)分支,不能直接在此進(jìn)行代碼修改和提交。
- develop為日常使用分支。
- feature新功能分支,當(dāng)完成一個功能并測試通過后進(jìn)行合并到develop分支中。
- hotfix線上緊急漏洞修復(fù)分支,從master分支拉取創(chuàng)建,修復(fù)完bug后合并到master和develop分支中。
-
gitlab flow工作流(最大原則叫做"上游優(yōu)先"(upsteam first),即只存在一個主分支master,它是所有其他分支的"上游"。只有上游分支采納的代碼變化,才能應(yīng)用到其他分支):
master->pre-production->production
- master開發(fā)環(huán)境分支
- pre-production預(yù)發(fā)環(huán)境分支
- production生產(chǎn)環(huán)境分支
git commit規(guī)范
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer> 復(fù)制代碼占位標(biāo)簽解析: type:代表某次提交的類型,比如是修復(fù)一個bug還是增加一個新的feature。所有的type類型如下: scope:scope說明commit影響的范圍。scope依據(jù)項(xiàng)目而定,例如在業(yè)務(wù)項(xiàng)目中可以依據(jù)菜單或者功能模塊劃分,如果是組件庫開發(fā),則可以依據(jù)組件劃分。 subject:是commit的簡短描述 body:提交代碼的詳細(xì)描述 footer:如果代碼的提交是不兼容變更或關(guān)閉缺陷,則Footer必需,否則可以省略。feat[特性]:新增feature fix[修復(fù)]: 修復(fù)bug docs[文檔]: 僅僅修改了文檔,比如README, CHANGELOG, CONTRIBUTE等等 style[格式]: 僅僅修改了空格、格式縮進(jìn)、都好等等,不改變代碼邏輯 refactor[重構(gòu)]: 代碼重構(gòu),沒有加新功能或者修復(fù)bug perf[優(yōu)化]: 優(yōu)化相關(guān),比如提升性能、體驗(yàn) test[測試]: 測試用例,包括單元測試、集成測試等 chore[工具]: 改變構(gòu)建流程、或者增加依賴庫、工具等 revert[回滾]: 回滾到上一個版本 復(fù)制代碼示例:
特性:添加頭像功能 特性:添加收藏功能 修復(fù):在android機(jī)器上傳崩潰問題解決 文檔:修改README,增加了使用說明 優(yōu)化:首頁圖片加載緩慢優(yōu)化 重構(gòu):對頭像功能進(jìn)行封裝重構(gòu) 復(fù)制代碼Git標(biāo)簽打包規(guī)范
**Tag版本號:**Tag包括3位版本,前綴使用v。比如v1.2.31。
Tag命名規(guī)范:
1.新功能開發(fā)使用第2位版本號,bug修復(fù)使用第3位版本號
2.首版本號是全新的功能類,功能模塊上線才做的調(diào)整
**標(biāo)題格式:項(xiàng)目名-日期
內(nèi)容格式:<分類>---<內(nèi)容>
<分類>:**新功能、bug修復(fù)、優(yōu)化、依賴升級、重構(gòu)、漏洞&補(bǔ)丁
示例:
此圖片引用自:我們的GIT工作流
Git Commit格式校驗(yàn)
- 準(zhǔn)備commitlint/cli用于格式校驗(yàn)
- 準(zhǔn)備husky用于git提交代碼時觸發(fā)校驗(yàn)
2.在項(xiàng)目根目錄創(chuàng)建配置文件commitlint.config.js,可以使用以下命令創(chuàng)建
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js 復(fù)制代碼3.在配置文件中定義提交規(guī)范,可使用以下配置:
"module.exports = {extends: ['@commitlint/config-conventional']}"module.exports = {extends: ['@commitlint/config-conventional'],rules: {'type-enum': [2, 'always', ["feat", "fix", "docs", "style", "refactor", "test", "chore", "revert"]],'subject-full-stop': [0, 'never'],'subject-case': [0, 'never']} }; 復(fù)制代碼4.項(xiàng)目添加husky,進(jìn)行g(shù)it提交觸發(fā)校驗(yàn),安裝如下:
npm install husky --save-dev 復(fù)制代碼5.安裝完成后在package.json中配置如下信息
"scripts": {"commitmsg": "commitlint -e $GIT_PARAMS",},"config": {"commitizen": {"path": "cz-customizable"}}, 復(fù)制代碼6.經(jīng)過以上步驟,git commit的規(guī)范校驗(yàn)已經(jīng)完成。可以進(jìn)行代碼提交了。
不規(guī)范提交>git commit -m "添加新功能" 提示: ? input: 添加新功能 ? subject may not be empty [subject-empty] ? type may not be empty [type-empty]規(guī)范提交>git commit -m "feat: 添加新功能" 復(fù)制代碼漢化與自定義校驗(yàn)規(guī)則
1.當(dāng)前項(xiàng)目安裝commitlint-config-cz,如下
npm install commitlint-config-cz --save-dev 復(fù)制代碼2.commitlint校驗(yàn)規(guī)則配置添加如下設(shè)置:
module.exports = {extends: ['cz'] }; 復(fù)制代碼3.下載官方配置文件進(jìn)行修改。官方配置文件cz-config-EXAMPLE.js。修改示例如下:
'use strict';module.exports = {types: [{value: '特性',name: '特性: 一個新的特性'},{value: '修復(fù)',name: '修復(fù): 修復(fù)一個Bug'},{value: '文檔',name: '文檔: 變更的只有文檔'},{value: '格式',name: '格式: 空格, 分號等格式修復(fù)'},{value: '重構(gòu)',name: '重構(gòu): 代碼重構(gòu),注意和特性、修復(fù)區(qū)分開'},{value: '性能',name: '性能: 提升性能'},{value: '測試',name: '測試: 添加一個測試'},{value: '工具',name: '工具: 開發(fā)工具變動(構(gòu)建、腳手架工具等)'},{value: '回滾',name: '回滾: 代碼回退'}],scopes: [{name: '用戶模塊'},{name: '訂單模塊'},{name: '社區(qū)模塊'},{name: '商品模塊'}],// it needs to match the value for field type. Eg.: 'fix'/*scopeOverrides: {fix: [{name: 'merge'},{name: 'style'},{name: 'e2eTest'},{name: 'unitTest'}]},*/// override the messages, defaults are as followsmessages: {type: '選擇一種你的提交類型:',scope: '選擇一個scope (可選):',// used if allowCustomScopes is truecustomScope: 'Denote the SCOPE of this change:',subject: '簡要說明:\n',body: '詳細(xì)說明,使用"|"換行(可選):\n',breaking: '非兼容性說明 (可選):\n',footer: '關(guān)聯(lián)關(guān)閉的issue,例如:#31, #34(可選):\n',confirmCommit: '確定提交?'},allowCustomScopes: true,allowBreakingChanges: ['特性', '修復(fù)'],// limit subject lengthsubjectLimit: 100}; 復(fù)制代碼生成changelog
1.安裝conventional-changelog,可以快速生成提交日志
npm install -g conventional-changelog-cli npm install -g cz-conventional-changelog 復(fù)制代碼2.項(xiàng)目根目錄下添加?.czrc?配置文件,文件內(nèi)容如下
{ "path": "cz-conventional-changelog" } 復(fù)制代碼3.在package.json中的scripts項(xiàng)增加如下指令
"version": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md" 復(fù)制代碼4.執(zhí)行npm run version即可在當(dāng)前目錄生成changelog日志了。
參考:
我們的GIT工作流?
Cz工具集使用介紹 - 規(guī)范Git提交說明
git工作流程
轉(zhuǎn)載于:https://juejin.im/post/5d05ef596fb9a07ef63fdbe7
總結(jié)
以上是生活随笔為你收集整理的git 工作流和git commit规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么美国的程序员工作轻松、还加班少?
- 下一篇: 能用钱解决的,绝不要花时间 过来人的11