当前位置: 首页 > news >正文

Git使用规范指南

文章目录

  • Git使用规范指南
    • 前言
    • 分支命名规范
    • 分支合并流程规范
    • 提交信息规范
      • Angular提交规范
      • 注意事项
    • 通用Git忽略文件配置

Git使用规范指南

前言

由于最近写完代码之后,Git使用不规范被领导说了,所以最近通过阅读大量的相关博客快速学习Git使用规范,关于Git的相关基础知识,可以参考我的这篇文章:Git、Github、Gitee、GitLab学习笔记-CSDN博客

PS:参考资料在文末,至此也十分感谢互联网上哪些无私分享知识的前辈,可能文中存在纰漏或者描述不当的地方,还请各位大佬能够告知博主,博主将不胜感激

分支命名规范

分支功能环境可访问
master主分支,稳定版本pro
develop开发分支,最新版本dev
feature开发分支,实现新特性
test测试分支,功能测试fat
release预上线分支,发布新版本uat
hotfix紧急修复分支,修复线上bug
  • 常见的各种分支

    • master:主分支,也是用于部署生产环境的分支,需要确保master分支稳定性。master 分支一般由 release 以及 hotfix 分支合并,任何时间都不能直接修改代码。

    • develop:开发分支,始终保持最新完成以及bug修复后的代码,用于前后端联调。一般开发的新功能时,feature分支都是基于develop分支创建的。

    • feature:开发新功能时,以develop为基础创建feature分支。

      分支命名时以 feature/ 开头,后面可以加上开发的功能模块, 命名示例:feature/user_modulefeature/cart_module

    • test:测试分支,外部用户无法访问,专门给测试人员使用,版本相对稳定。

    • release:预上线分支(预发布分支),UAT测试阶段使用。一般由 test 或 hotfix 分支合并,不建议直接在 release 分支上直接修改代码。

    • hotfix:线上出现紧急问题时,需要及时修复,以 master 分支为基线,创建 hotfix 分支。修复完成后,需要合并到 master 分支和 develop 分支。分支命名以hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。

  • 常见的各种环境

    • pro(production environment):生产环境,面向外部用户的环境,正式环境,连接上互联网即可访问。
    • sit(system Integration test):系统集成测试,开发人员自己测试流程是否走通。
    • uat(user acceptance test environment):用户验收测试环境,是用户接受测试,实际使用的场景。这个环境的主要目标是将产品或系统推送到用户使用。在UAT环境下,可能要考虑到更多的实际使用因素,比如产品的操作体验、使用效果、交互感受等。
    • test(test environment):测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。
    • pre(pre-production environment):灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样,外部用户可以访问,版本发布初期,正式版本发布前。
    • dev(development environment) : 开发环境,外部用户无法访问,开发人员使用,版本变动很大。
    • fat(feature acceptance test environment):功能验收测试环境,用于软件测试者测试使用。
    • sim(simulation environment):仿真环境,模拟实际环境中的各种因素和条件,以验证系统的性能和可靠性。

知识拓展

  • uat和sim的区别:UAT环境更注重实际使用效果,而SIM环境更注重系统内部的测试和验证

分支合并流程规范

业界常见的两大主分支(masterdevelop)、三个辅助分支(featurereleasehotfix)的生命周期:

image-20231105233125253

以上生命周期仅作参考,不同开发团队可能有不同的规范,可自行灵活定义。

例如有的团队在开发时,会有以下的规定:

  1. develop 分支和 hotfix 分支,必须从 master 分支检出
  2. develop 分支需合并到 test 分支
  3. test 分支功能测试无误后,合并到 release 分支
  4. UAT 测试通过后,由 release 分支合并到 master分支
  5. 对于工作量小的功能开发(工时小于1天),可以直接在 devolop 分支进行开发;否则由 develop 分支检出 feature 分支进行开发,开发完后合并到develop 分支

提交信息规范

  • 提交信息规范化的作用

    • 提高可读性:使用规范化的提交信息可以使代码历史更容易理解。明确的描述可以使其他人更容易地理解代码的变更和原因;

      如果团队遵循相同的提交信息格式,那么所有代码库的提交历史都将具有一致性,这有助于保持代码库的整洁和一致性。

    • 有利于问题追踪:清晰的提交信息可以帮助开发人员快速定位和解决问题,因为它们提供了有关代码变更的上下文和原因;

    • 降低团队沟通成本:在团队协作中,规范化的提交信息有助于团队成员之间的沟通和协作。每个人都可以轻松地查看和理解代码变更,而无需依赖个人记忆或理解。

Angular提交规范

目前最受开发人员肯定的规范是前端框架Angular提出的Angular提交信息规范,Angular 的 Git Commit 准则可以遵循一些基本的规则和最佳实践,以确保代码的整洁和可读性。

  • Angular提交格式

    <type>(<scope>): <subject>
    <BLANK LINE>
    <body>
    <BLANK LINE>
    <footer>
    
    • type:提交类型,表示本次提交属于哪一种类型,常见的提交类型如下所示

      • build:对构建系统或者外部依赖项进行了修改
      • ci:对CI配置文件或脚本进行了修改
      • docs:对文档进行了修改
      • feat:增加新的特征
      • fix:修复 bug
      • pref:提高性能的代码更改
      • refactor:既不是修复 bug 也不是添加特征的代码重构
      • style:不影响代码含义的修改,比如空格、格式化、缺失的分号等
      • test:增加确实的测试或者矫正已存在的测试
      • delete:删除功能或文件
      • modify:修改功能
      • chore:对构建过程或辅助工具和库(如文档)的更改
      • revert:回滚到上一个版本
    • scope(可选项):作用域,表示更改的范围,例如全局、部分功能、数据层、控制层、视图层等等,视项目不同而不同等

    • subject:主题,是一个简短的描述,用于概括此次提交的主要更改内容。通常应该包含关键词和主要变化点

      有以下准则:

      • 使用命令式,现在时态:“改变”不是“已改变”也不是“改变了”
      • 不要大写首字母
      • 不在末尾添加句号
    • body:主体,是详细的描述部分,也就是提交的正文描述信息,提供了对所提交更改的更详细的信息,包括更改的原因、具体步骤、结果等

      有以下准则:

      • 使用命令式、现在时态

      • 应该包含修改的动机以及和之前行为的对比

    • BLANK LINE:空行,用于进行分隔主体内容

    • footer(可选项):页脚,通常包含有关此次提交的其他信息,如提交人、提交时间、相关issue或PR号等

      常用取值如下:

      • BREAKING CHANGE:表示本次提交是不兼容修改,不兼容修改指的是本次提交修改了不兼容之前版本的 API 或者环境变量
      • Closes:表示本次提交目的是修改 issue,一般后面跟上 issue 的编号,表示成功解决了这个编号的 issue
      • revert:表示本次提交中包含了回滚内容
  • Angular Git Commit 准则的建议

    • 每个提交应该只包含一个相关的更改。
    • 使用有意义的 commit 描述,清晰地描述更改的内容和原因。
    • 使用英文编写 commit 描述,以提高可读性和理解度。
    • 使用主次信息格式,包括类型(feat、fix、docs、style、refactor、perf、test)、描述性标题和详细信息。
    • 使用短行,每行不超过 72 个字符。
    • 避免使用代词 “it”,使用名词或动词来描述代码更改。
    • 在 commit 描述中包含 issue 或 PR 号,以便于追踪和合并更改。
    • 在 commit 消息中标记特性分支(feature),以区分不同特性的开发工作。

示例

feat(user): 添加用户登录功能新增了用户登录功能,包括用户认证和权限控制。BREAKING CHANGE: 修改了用户认证接口的返回格式Closes #123

在这个示例中,提交类型为 feat(新功能),作用域为 user,描述了添加用户登录功能的修改。同时,还包含了详细的描述、BREAKING CHANGE (破坏性变更的说明)和 Closes #123都是 footer

注意事项

  • 提交注意事项

    • 提交问题必须为同一类别

    • 提交问题不要超过3个

      • 提交的commit发现不符合规范,①git commit --amend -m "新的提交信息"或② git reset --hard HEAD 重新提交一次

        ①讲暂存区中的提交合并到当前提交

        ②丢弃暂存区中的提交并切换到最新提交

        注意:②这个命令会永久性地删除暂存区的(也就是执行了add但是没有执行commit的内容)修改,所以在使用时要非常小心

  • 分支注意事项

    • master 分支的每一次更新,都建议打 tag 添加标签,通常为对应版本号,便于管理
    • feature分支、hotfix分支在合并后可以删除,避免分支过多管理混乱
  • 拉取注意事项

    • 每次编码前都先 pull 一下,有效防止远程库与本地库冲突导致无法提交,因为远程库代码可能发生了更新,但是我们本地库没有更新
    • 每次 pull 代码前,提交本地代码到本地库中,否则可能回出现合并代码出错,导致代码丢失

通用Git忽略文件配置

下面是一份通用的Git忽略文件配置,让我们提交的文件更加简洁、干净

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/### VS Code ###
.vscode/# Log file
*.log
/logs*# BlueJ files
*.ctxt# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
*.cmd

参考资料

  • 团队项目的 Git 分支管理规范-腾讯云开发者社区-腾讯云 (tencent.com)
  • 大厂都在用的Git代码管理规范 - 知乎 (zhihu.com)
  • Commit message 和 Change log 编写指南 - 阮一峰的网络日志 (ruanyifeng.com)
  • Git commit规范(Angular) - 掘金 (juejin.cn)
  • Git Guide (zj-git-guide.readthedocs.io)
  • angular/CONTRIBUTING.md(github.com)

相关文章:

Git使用规范指南

文章目录 Git使用规范指南前言分支命名规范分支合并流程规范提交信息规范Angular提交规范注意事项 通用Git忽略文件配置 Git使用规范指南 前言 由于最近写完代码之后&#xff0c;Git使用不规范被领导说了&#xff0c;所以最近通过阅读大量的相关博客快速学习Git使用规范&#…...

axios和Ajax

1.axios 官网&#xff1a;https://axios-http.com/zh/ CDN&#xff1a;https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js axios是一个请求库&#xff0c;在浏览器环境中&#xff0c;它封装了XHR&#xff0c;提供更加便捷的API发送请求 基本使用 // 发送 get 请求…...

Day06

1.继承 1.1 定义 让类与类之间产生子父类关系&#xff0c;有了继承性之后&#xff0c;子类就获取到了父类中声明的所有属性和方法。 1.2 优点 继承的出现减少了代码冗余&#xff0c;提高了代码的复用性。继承的出现&#xff0c;更有利于功能的扩展。继承的出现让类与类之间…...

@Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成

问题 Tag和Operation标签失效 但是Schema标签有效 pom依赖 <!-- 接口文档--><!--引入openapi支持--><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><vers…...

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点&#xff1a; 1. 硬件设施&#xff1a;包括服务器、存储设备、网络设备等&#xff0c;这是整个系统运行的物理基础。 2. 软件设施&#xff1a;包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等&#xff0c;这些是…...

python执行cmd命令——控制电脑连接wifi——程序打包

import subprocess # 使用Popen创建进程&#xff0c;并与进程进行复杂的交互 proc subprocess.Popen(netsh wlan show network, # cmd特定的查询空间的命令stdinNone, # 标准输入 键盘stdoutsubprocess.PIPE, # -1 标准输出&#xff08;演示器、终端) 保存到管道中以便进行操作…...

Vue中nextTick的使用及原理

在Vue.js中&#xff0c;nextTick方法可以让我们在DOM更新后执行一些操作。通常情况下&#xff0c;在数据发生变化后&#xff0c;Vue.js会异步地更新DOM&#xff0c;这样可以减少不必要的DOM操作&#xff0c;提高性能。但是&#xff0c;有时候我们需要在DOM更新后对页面进行一些…...

【Linux】拓展:运维面试题,进程管理常见的7大问题

目录 一、如何判断一个程序是单线程还是多线程 二、僵尸进程是什么&#xff0c;有什么危害&#xff0c;如何解决 三、如何找回删掉的文件 四、删除文件以后&#xff0c;空间不释放 五、遇到一个病毒&#xff08;如死循环病毒&#xff09;&#xff0c;解决思路 六、机器开机…...

Android修行手册 - 一文全了解Kotlin几种静态变量、函数实现的那些事

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…...

Qt QTableView排序

1.简介 在开发过程中&#xff0c;我们需要通过点击表头来对QTableView或QTreeView等一系列高级视图进行排序操作&#xff0c;以下是进行排序的步骤。 步骤&#xff1a; 首先创建了一个QStandardItemModel对象或者继承QAbstractTableModel类作为数据模型&#xff0c;并设置了…...

Linux shell编程学习笔记22: () $() (()) 的用法小结

最近学习Linux Shell编程&#xff0c;对 () (()) [] [[]]等符号的用法还是有点分不太清楚&#xff0c;于是决定再梳理一下。今天先整理 () $() (()) 的用法。 1 单小括号() 1.1 子shell&#xff08;命令组&#xff09; 括号中的命令将会新开一个子shell顺序执行&#xff0c;所…...

1. Pthreads专栏简介

在基于共享内存的多处理器架构中&#xff0c;可使用线程实现并行。以前硬件供应商一般都会提供相应硬件专用的线程库&#xff0c;使得代码的可移植性成为另开发者头疼的一个问题。在UNIX系统中&#xff0c;IEEE POSIX 1003.1c标准已经定义了基于C的标准化线程编程接口规范&…...

C++17 fallthrough属性

在C17中&#xff0c;引入了[[fallthrough]]属性。这个属性主要用于switch语句中&#xff0c;用于告诉编译器&#xff0c;从上一个case标签到下一个case标签的执行是有意为之的&#xff0c;不应该被诊断为错误。 在switch-case语句中&#xff0c;如果当前case分支中不加break&a…...

STM32 蜂鸣器介绍 配置 播放音节

蜂鸣器一般被分为两类&#xff1a;有源蜂鸣器和无源蜂鸣器。其中源是振荡源。有源蜂鸣器内部有正当电路&#xff0c;可以把直流电源转换为一定频率的脉冲信号。因为它一直输出一定的频率&#xff0c;我们无法改变频率&#xff0c;我们只能通过电源&#xff0c;控制它发不发声&a…...

多目标最优化的资产配置

摘要及声明 1&#xff1a;本文主要对基于均值方差最优化的资产配置方法进行拓展&#xff0c;从多目标最优化的角度看待资产配置并可视化展示&#xff1b; 2&#xff1a;本文主要为理念的讲解&#xff0c;模型也是笔者自建&#xff0c;文中假设与观点是基于笔者对模型及数据的…...

word图片的标题跑到了图片的上方。

问题描述&#xff1a;在写论文时&#xff0c;在word文档中插入了一个svg图片&#xff0c;然后在图片下方输入标题。后面可能是调整了svg图片的大小&#xff0c;标题跑到了图片的上方。 具体情况如下图所示。标题明显跑到了图片的上方。 解决办法&#xff1a;把svg图片格式调成…...

electron打包下载资源失败,设置国内镜像

0.electron介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows、Linux及macOS上运行的跨平台应用。可以用原生html写&#xff0c;也可以用vue等…...

架构漫谈 - 如何设计高性能、高可用、高扩展架构

文章目录 一、如何设计高扩展架构架构设计复杂度模型可扩展复杂度模型"拆分"复杂度分析和设计"封装"复杂度分析和设计(1)规则引擎:美团MazeGO规则引擎(2)微内核:OSGI微内核(3)抽象层:Linux VFS抽象层(4)设计模式二、设计高性能架构单机高性能集…...

matlab 读写ENVI标准数据

本博客主要讲解如何读、生成ENVI标准格式的数据。主要分为四部分&#xff1a;读取ENVI头文件、读取ENVI数据、写入ENVI头文件、生成ENVI标准数据&#xff0c;最后附加讲解了本人写的生成hdr文本文件代码。此外&#xff0c;文中还具体介绍写代码的一些思路。 一、读取ENVI头文件…...

如何对ppt文件设置修改权限?

PPT文件会应用在会议、演讲、课件等工作生活中&#xff0c;当我们制作好了PPT之后&#xff0c;保护内容防止在演示时出错是很重要的&#xff0c;那么如何将PPT文件设置成禁止修改模式呢&#xff1f;今天分享几个方法给大家。 方法一 将PPT文件直接保存或者另存为一份文件&…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...