搜索
首页开发工具gitGitlab学习之企业常用的一些git规范
Gitlab学习之企业常用的一些git规范Apr 01, 2023 am 08:30 AM
gitgithubgitlab

Gitlab学习之企业常用的一些git规范

俗话说,没有规矩不成方圆,我们的git也需要规范。

下面介绍一下企业常用的一些规范。

分支管理规范

分支命名不能千奇百怪,必须有统一的命名方式。主要有以下几种:

分支管理 命名规范 解释
master 主分支 master 稳定版本分支,上线完成回归后后,由项目技术负责人从 release 分支合并进来,并打 tag
test 测试分支 test/yyyyMMdd_ 功能名称示例:test/20220426_blog 测试人员使用分支,测试时从 feature 分支合并进来
feature 功能开发分支 feature/yyyyMMdd_ 功能名称_负责人员示例:feature/20220426_blog_xiumubai 新功能开发使用分支,基于master建立
fix bug修复分支 fix/yyyyMMdd_ 功能名称_负责人员示例:fix/20220426_blog_xiumubai 紧急线上bug修复使用分支,基于master建立
release 上线分支 release/版本号示例:release/0.1.0 用于上线的分支,基于 master 建立,必须对要并入的 feature 分支进行 Code review 后,才可并入上线
分支管理

命名规范 解释

master 主分支 master 稳定版本分支,上线完成回归后后,由项目技术负责人从 release 分支合并进来,并打 tag
test 测试分支 test/yyyyMMdd_ 功能名称示例:test/20220426_blog 测试人员使用分支,测试时从 feature 分支合并进来
feature 功能开发分支 feature/yyyyMMdd_ 功能名称_负责人员示例:feature/20220426_blog_xiumubai 新功能开发使用分支,基于master建立
fix bug修复分支 fix/yyyyMMdd_ 功能名称_负责人员示例:fix/20220426_blog_xiumubai 紧急线上bug修复使用分支,基于master建立
release 上线分支 release/版本号示例:release/0.1.0 用于上线的分支,基于 master 建立,必须对要并入的 feature 分支进行 Code review 后,才可并入上线
项目上线release分支创建定义:
  
第一个数字是主版本。第二个数字是次版本。第三个数字是补丁版本(hotfix 类的更新)。

主版本:含有破坏性更新、大调整等。 例如:1.1.0 > 2.0.0

次版本:增加新功能特性。例如:1.1.0 > 1.2.0

补丁版本:修复问题等。例如:1.1.0 > 1.1.1
版本号管理规范

当我们上线的时候,需要给版本号打tag,下面是版本号规范:

下图是一个围绕git规范来的开发流程图:

前缀 解释
feat 新功能
fix 修复
docs 文档变更
style 代码格式
refactor 重构
perf 性能优化
test 增加测试
revert 回退
build 打包
chore 构建过程或辅助工具的变动
提交信息规范最后是commit的时候,需要对commit信息规范,必须要加前缀
前缀 解释
feat 新功能
fix 修复
docs 文档变更
style 代码格式
refactor 重构
perf 性能优化
test 增加测试
revert 回退
build 打包
chore 构建过程或辅助工具的变动

下图是vue3源码的提交信息规范:

下面我们就实际操作一下,如果通过husky+commitlint集成一个统一规范的git commit信息。

配置 git 提交的校验钩子

  • husky: git提交时触发hooks
  • commitlint: 对提交的内容做规范校验 husky,主要对pre-commit和commit-msg钩子做校验。
# 安装husky
yarn add husky -D
# 初始化husky配置,在根目录新增.husky配置文件。初始化配置pre-commit
npx husky-init 
# 另外新增一个hooks,commit-msg
npx husky add .husky/commit-msg

目录结构是下面这样子的:

commit-msg文件中添加 npm run commitlint

pre-commit文件中有个npm run test我们先注释掉,不然会报错。

安装commitlint

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

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

module.exports = {
  extends: ['@commitlint/config-conventional'],
  // 校验规则
  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

因为我们需要运行npm run commitlint,所以需要在package.json文件中添加如下代码:

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

配置结束,现在当我们填写commit信息的时候,前面就需要带着下面的subject

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

比如:git commit -m "feat: test",注意feat:后面有个空格

我们来写一个错误的来测试一下:

提示subject是空的。

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

使用 commitizen 做git规范化提交

由于添加了commitlint验证,对于不熟悉提交规范的新手同学会有一定影响,可以添加 commitizen 工具,手动生成规范化commit。

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

# 工具安装
yarn add -D commitizen

使用cz-conventional-changelog

安装工具

yarn add cz-conventional-changelog -D

配置命令

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

在package.json 中添加定义commitizen使用规则,

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

当执行git commit的时候,就可以提示我们填写代码规则了

自定义 commitizen 规则

使用 cz-customizable 工具

# 安装依赖
yarn add cz-customizable -D

配置命令

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

在package.json 中添加自定义commitizen,使用git-cz执行git commit命令

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

在根目录创建的.cz-config.js, 自定义commit提示内容

module.exports = {
  types: [
    { value: 'feat', name: '✨feat:     新功能' },
    { value: 'fix', name: '?fix:      修复' },
    { value: 'docs', name: '✏️docs:     文档变更' },
    { value: 'style', name: '?style:    代码格式(不影响代码运行的变动)' },
    {
      value: 'refactor',
      name: '♻️refactor: 重构(既不是增加feature,也不是修复bug)'
    },
    { value: 'perf', name: '⚡️perf:     性能优化' },
    { value: 'test', name: '✅test:     增加测试' },
    { value: 'chore', name: '?chore:    构建过程或辅助工具的变动' },
    { value: 'revert', name: '⏪️revert:   回退' },
    { value: 'build', name: '?️build:    打包' },
    { value: 'ci', name: '?CI:   related changes' }
  ],
  // override the messages, defaults are as follows
  messages: {
    type: '请选择提交类型(必选):',
    // scope: '请输入文件修改范围(可选):',
    customScope: '请输入修改范围(可选):',
    subject: '请简要描述提交(必填):',
    // body: '请输入详细描述(可选,待优化去除,跳过即可):',
    // breaking: 'List any BREAKING CHANGES (optional):\n',
    footer: '请输入要关闭的issue(待优化去除,跳过即可):',
    confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
  },
  // used if allowCustomScopes is true
  allowCustomScopes: true,
  // allowBreakingChanges: ['feat', 'fix'],
  skipQuestions: ['body', 'footer'],
  // limit subject length, commitlint默认是72
  subjectLimit: 72
}

当我们提交代码的时候,需要先git add .,然后执行npm run commit,就可以根据响应的提示填写commit信息 了,如下图所示:

(学习视频分享:编程基础视频

以上是Gitlab学习之企业常用的一些git规范的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:掘金社区。如有侵权,请联系admin@php.cn删除
github是什么github是什么Mar 24, 2023 pm 05:46 PM

​GitHub是一个面向开源及私有软件项目的托管平台,可以让开发者们在这里托管自己的代码,并进行版本控制。GitHub主打的是开源项目与协作,通过这个平台上的开源项目,开发者们可以查看其他开发者的项目源代码,并进行交流和学习。

git中push -u是什么意思git中push -u是什么意思Jul 01, 2022 am 10:36 AM

在git中,“push -u”的意思是将本地的分支版本上传到远程合并,并且记录push到远程分支的默认值;当添加“-u”参数时,表示下次继续push的这个远端分支的时候推送命令就可以简写成“git push”。

如何在GitLab上进行第一次登录并更改密码如何在GitLab上进行第一次登录并更改密码Mar 24, 2023 pm 05:46 PM

GitLab是一种基于Web的Git版本控制库管理软件,旨在帮助开发团队更好地协同工作,提高工作效率。当您第一次登录GitLab时,系统会提示您要更改初始密码以确保账户安全。本文将为大家介绍如何在GitLab上进行第一次登录并更改密码。

git的pack文件有什么用git的pack文件有什么用Jun 30, 2022 pm 05:41 PM

在git中,pack文件可以有效的使用磁盘缓存,并且为常用命令读取最近引用的对象提供访问模式;git会将多个指定的对象打包成一个成为包文件(packfile)的二进制文件,用于节省空间和提高效率。

git中pull失败了怎么办git中pull失败了怎么办Jun 30, 2022 pm 04:47 PM

git中pull失败的解决方法:1、利用“git reset --hard”强制覆盖掉自己的本地修改;2、利用“git stash”推送一个新的储藏,拉取之后利用“git stash pop”将修改保存到暂存区;3、若依然出现问题,则将文件保存到暂存区并提交注释即可。

git分支能改名字吗git分支能改名字吗Jun 16, 2022 pm 05:55 PM

git分支能改名字。改名方法:1、利用git中的branch命令修改本地分支的名称,语法为“git branch -m 旧名字 新名字”;2、利用“git push origin 新名字”命令,在删除远程分支之后将改名后的本地分支推送到远程;3、利用IDEA直接操作修改分支名称即可。

git怎么删除某个分支git怎么删除某个分支Jun 24, 2022 am 11:11 AM

git删除某个分支的方法:1、利用“git branch --delete dev”命令删除本地分支;2、利用“git push origin --delete branch”命令删除远程分支;3、利用“git branch --delete --remotes”命令删除追踪分支。

用三行代码使你的git提交记录变干净用三行代码使你的git提交记录变干净Feb 28, 2023 pm 04:19 PM

本篇文章给大家带来了关于git的相关知识,其中主要跟大家聊一聊怎么让你的git记录保持整洁,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!