Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

俗話說,沒有規(guī)矩不成方圓,我們的git也需要規(guī)范。

下面介紹一下企業(yè)常用的一些規(guī)范。

分支管理規(guī)范

分支命名不能千奇百怪,必須有統(tǒng)一的命名方式。主要有以下幾種:

分支管理 命名規(guī)范 解釋
master 主分支 master 穩(wěn)定版本分支,上線完成回歸后后,由項(xiàng)目技術(shù)負(fù)責(zé)人從 release 分支合并進(jìn)來,并打 tag
test 測(cè)試分支 test/yyyyMMdd_ 功能名稱示例:test/20220426_blog 測(cè)試人員使用分支,測(cè)試時(shí)從 feature 分支合并進(jìn)來
feature 功能開發(fā)分支 feature/yyyyMMdd_ 功能名稱_負(fù)責(zé)人員示例:feature/20220426_blog_xiumubai 新功能開發(fā)使用分支,基于master建立
fix bug修復(fù)分支 fix/yyyyMMdd_ 功能名稱_負(fù)責(zé)人員示例:fix/20220426_blog_xiumubai 緊急線上bug修復(fù)使用分支,基于master建立
release 上線分支 release/版本號(hào)示例:release/0.1.0 用于上線的分支,基于 master 建立,必須對(duì)要并入的 feature 分支進(jìn)行 Code review 后,才可并入上線

版本號(hào)管理規(guī)范

當(dāng)我們上線的時(shí)候,需要給版本號(hào)打tag,下面是版本號(hào)規(guī)范:

項(xiàng)目上線release分支創(chuàng)建定義: ?? 第一個(gè)數(shù)字是主版本。第二個(gè)數(shù)字是次版本。第三個(gè)數(shù)字是補(bǔ)丁版本(hotfix?類的更新)。  主版本:含有破壞性更新、大調(diào)整等。?例如:1.1.0?>?2.0.0  次版本:增加新功能特性。例如:1.1.0?>?1.2.0  補(bǔ)丁版本:修復(fù)問題等。例如:1.1.0?>?1.1.1

下圖是一個(gè)圍繞git規(guī)范來的開發(fā)流程圖:

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

提交信息規(guī)范

最后是commit的時(shí)候,需要對(duì)commit信息規(guī)范,必須要加前綴

前綴 解釋
feat 新功能
fix 修復(fù)
docs 文檔變更
style 代碼格式
refactor 重構(gòu)
perf 性能優(yōu)化
test 增加測(cè)試
revert 回退
build 打包
chore 構(gòu)建過程或輔助工具的變動(dòng)

下圖是vue3源碼的提交信息規(guī)范:

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

下面我們就實(shí)際操作一下,如果通過husky+commitlint集成一個(gè)統(tǒng)一規(guī)范的git commit信息。

配置 git 提交的校驗(yàn)鉤子

  • husky: git提交時(shí)觸發(fā)hooks
  • commitlint: 對(duì)提交的內(nèi)容做規(guī)范校驗(yàn) husky,主要對(duì)pre-commit和commit-msg鉤子做校驗(yàn)。
#?安裝husky yarn?add?husky?-D #?初始化husky配置,在根目錄新增.husky配置文件。初始化配置pre-commit npx?husky-init? #?另外新增一個(gè)hooks,commit-msg npx?husky?add?.husky/commit-msg

目錄結(jié)構(gòu)是下面這樣子的:

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

在commit-msg文件中添加 npm run commitlint

在pre-commit文件中有個(gè)npm run test我們先注釋掉,不然會(huì)報(bào)錯(cuò)。

安裝commitlint

#?添加依賴文件 yarn?add?@commitlint/config-conventional?@commitlint/cli?-D

添加配置文件,新建commitlint.config.js,然后添加下面的代碼:

module.exports?=?{ ??extends:?['@commitlint/config-conventional'], ??//?校驗(yàn)規(guī)則 ??rules:?{ ????'type-enum':?[ ??????2, ??????'always', ??????[ ????????'feat', ????????'fix', ????????'docs', ????????'style', ????????'refactor', ????????'perf', ????????'test', ????????'chore', ????????'revert', ????????'build', ??????], ????], ????'type-case':?[0], ????'type-empty':?[0], ????'scope-empty':?[0], ????'scope-case':?[0], ????'subject-full-stop':?[0,?'never'], ????'subject-case':?[0,?'never'], ????'header-max-length':?[0,?'always',?72], ??}, }

配置scripts

因?yàn)槲覀冃枰\(yùn)行npm run commitlint,所以需要在package.json文件中添加如下代碼:

#?在scrips中添加下面的代碼 { "scripts":?{ ????"commitlint":?"commitlint?--config?commitlint.config.js?-e?-V" ??}, }

配置結(jié)束,現(xiàn)在當(dāng)我們填寫commit信息的時(shí)候,前面就需要帶著下面的subject

'feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'revert', 'build',

比如:git commit -m “feat: test”,注意feat:后面有個(gè)空格

我們來寫一個(gè)錯(cuò)誤的來測(cè)試一下:

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

提示subject是空的。

使用正確的提交方式,提交成功了

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

使用 commitizen 做git規(guī)范化提交

由于添加了commitlint驗(yàn)證,對(duì)于不熟悉提交規(guī)范的新手同學(xué)會(huì)有一定影響,可以添加 commitizen 工具,手動(dòng)生成規(guī)范化commit。

Commitizen是一個(gè)格式化commit message的工具。

#?工具安裝 yarn?add?-D?commitizen

使用cz-conventional-changelog

安裝工具

yarn?add?cz-conventional-changelog?-D

配置命令

"script":?{ ????"commit":?"cz" }

在package.json 中添加定義commitizen使用規(guī)則,

{ 	"config":?{ ????"commitizen":?{ ??????"path":?"./node_modules/cz-conventional-changelog" ????} ??}, }

當(dāng)執(zhí)行g(shù)it commit的時(shí)候,就可以提示我們填寫代碼規(guī)則了

自定義 commitizen 規(guī)則

使用 cz-customizable 工具

#?安裝依賴 yarn?add?cz-customizable?-D

配置命令

"script":?{ ????"commit":?"git-cz" }

在package.json 中添加自定義commitizen,使用git-cz執(zhí)行g(shù)it commit命令

"config":?{ ????"commitizen":?{ ????????"path":?"./node_modules/cz-customizable" ????} }

在根目錄創(chuàng)建的.cz-config.js, 自定義commit提示內(nèi)容

module.exports?=?{ ??types:?[ ????{?value:?'feat',?name:?'?feat:?????新功能'?}, ????{?value:?'fix',?name:?'?fix:??????修復(fù)'?}, ????{?value:?'docs',?name:?'??docs:?????文檔變更'?}, ????{?value:?'style',?name:?'?style:????代碼格式(不影響代碼運(yùn)行的變動(dòng))'?}, ????{ ??????value:?'refactor', ??????name:?'??refactor:?重構(gòu)(既不是增加feature,也不是修復(fù)bug)' ????}, ????{?value:?'perf',?name:?'??perf:?????性能優(yōu)化'?}, ????{?value:?'test',?name:?'?test:?????增加測(cè)試'?}, ????{?value:?'chore',?name:?'?chore:????構(gòu)建過程或輔助工具的變動(dòng)'?}, ????{?value:?'revert',?name:?'??revert:???回退'?}, ????{?value:?'build',?name:?'??build:????打包'?}, ????{?value:?'ci',?name:?'?CI:???related?changes'?} ??], ??//?override?the?messages,?defaults?are?as?follows ??messages:?{ ????type:?'請(qǐng)選擇提交類型(必選):', ????//?scope:?'請(qǐng)輸入文件修改范圍(可選):', ????customScope:?'請(qǐng)輸入修改范圍(可選):', ????subject:?'請(qǐng)簡要描述提交(必填):', ????//?body:?'請(qǐng)輸入詳細(xì)描述(可選,待優(yōu)化去除,跳過即可):', ????//?breaking:?'List?any?BREAKING?CHANGES?(optional):n', ????footer:?'請(qǐng)輸入要關(guān)閉的issue(待優(yōu)化去除,跳過即可):', ????confirmCommit:?'確認(rèn)使用以上信息提交?(y/n/e/h)' ??}, ??//?used?if?allowCustomScopes?is?true ??allowCustomScopes:?true, ??//?allowBreakingChanges:?['feat',?'fix'], ??skipQuestions:?['body',?'footer'], ??//?limit?subject?length,?commitlint默認(rèn)是72 ??subjectLimit:?72 }

當(dāng)我們提交代碼的時(shí)候,需要先git add .,然后執(zhí)行npm run commit,就可以根據(jù)響應(yīng)的提示填寫commit信息 了,如下圖所示:

Gitlab學(xué)習(xí)之企業(yè)常用的一些git規(guī)范

(學(xué)習(xí)視頻分享:編程基礎(chǔ)視頻

以上就是Gitlab學(xué)習(xí)之企業(yè)常用的一些

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享