【Git】的分支和标签的讲解及实际应用场景

目录

一、讲解

1. 环境讲述

2. 应用原因

3. 分支标签的区别

二、分支

1. 命令

2. 场景应用

三、标签

1. 命令

2. 标签规范

3. 应用场景

每篇一获


一、讲解

1. 环境讲述

当软件从开发到正式环境部署的过程中,不同环境的作用如下:

  1. 开发环境:用于开发人员进行软件开发、测试和调试。在这个环境中,开发人员可以快速地进行代码编写、功能测试和调试,同时也可以模拟真实环境中的情况进行开发。

  2. 测试环境:用于进行软件的功能测试和性能测试。在测试环境中,测试人员可以对软件的各项功能进行测试,包括单元测试、集成测试和系统测试,以及性能和稳定性测试。

  3. 集成环境:用于将不同模块或组件集成在一起进行测试。在这个环境中,开发人员可以确保不同模块之间的接口和交互正常,同时也可以进行一些集成测试,以验证整个系统的功能和稳定性。

  4. 灰度环境:用于部分用户或服务器进行新版本的有限范围测试。在灰度环境中,可以让一部分用户先体验新版本,以便及时发现和解决问题,降低全面发布带来的风险。

  5. 预生产环境:用于进行最终的测试和验证,通常会模拟正式环境的配置和数据。在这个环境中,可以进行最终的功能测试、性能测试和用户验收测试,以确保软件在正式环境中能够正常运行。

  6. 生产环境:最终部署和运行软件的环境,用于提供给最终用户使用。在生产环境中,软件需要保持高可用性、稳定性和安全性,以满足用户的需求。

通过以上不同的环境,可以确保软件在开发、测试和部署的过程中能够逐步验证和完善,最终在生产环境中提供给用户使用。

2. 应用原因

在大型企业开发中使用这些环境是非常重要的 :

1. 隔离开发和测试:在大型企业中,通常有多个开发团队同时进行软件开发,使用不同的开发环境可以隔离彼此的工作,避免相互干扰和冲突。同时,测试环境的使用可以确保开发人员和测试人员在不同的环境中进行工作,保持独立性和专注性。

2. 确保质量:通过在不同环境中进行测试,可以更好地确保软件的质量。在集成环境中进行集成测试,可以验证不同模块之间的交互和接口;在预生产环境中进行最终测试,可以模拟真实环境中的情况,确保软件能够正常运行;而在灰度环境中进行有限范围的测试,可以降低新版本发布的风险。

3. 降低错误传播:通过使用不同的环境,可以在不同阶段发现和解决问题,避免错误在软件开发过程中的传播。比如,在开发环境中发现的问题可以及时修复,避免进入测试和生产环境。

4. 用户体验和反馈:通过在灰度环境中进行有限范围的测试,可以让一部分用户提前体验新版本,了解用户对新功能的反馈和需求,有助于优化软件的用户体验。

5. 风险管理:在预生产环境中进行最终测试和验证,可以降低软件在生产环境中出现问题的风险。同时,通过灰度环境的使用,可以降低新版本发布带来的风险,确保软件的稳定性和可靠性。

因此,在大型企业开发中使用不同的环境可以帮助团队更好地进行软件开发、测试和部署,确保软件在不同阶段都能够满足用户需求和质量要求。

3. 分支标签的区别

在 Git 中,分支和标签都是用来标记代码历史的重要工具,它们之间有以下几点关系:

1. 分支和标签都是指向提交(commit)的指针。分支指向最新的提交,标签指向一个特定的提交。

2. 分支和标签都可以用来记录代码历史的不同版本。分支通常用于开发过程中的版本控制,标签通常用于发布版本时的标记。

3. 分支和标签的区别在于,分支可以移动,而标签不可以。移动分支意味着将当前工作目录的 HEAD 指向新的提交,这样就可以继续在新的提交上进行开发。标签则是一个静态的指针,指向一个特定的提交,不会随着代码的修改而移动。

4. 分支和标签的创建和删除都是非常容易的。使用 `git branch` 命令可以创建和删除分支,使用 `git tag` 命令可以创建和删除标签。

总之,分支和标签都是 Git 中非常重要的概念,它们可以帮助我们更好地管理代码历史,进行版本控制和发布管理。在实际开发中,我们需要根据具体的需求和场景来选择使用分支或标签。

二、分支

1. 命令

创建分支:

git branch    <branch_name>             # 创建一个名为<branch_name>的新分支
git checkout -b    <branch_name>     # 创建一个新分支<branch_name>并切换到该分支

查看分支:

git branch                            # 查看所有本地分支
git branch -a                        # 查看所有本地和远程分支

进入分支(切换分支):

git checkout  <branch_name>       # 切换到名为<branch_name>的分支

上传分支(推送分支到远程仓库):

git push origin  <branch_name>    # 将当前分支推送到远程仓库

2. 场景应用

以下三步如有不清楚的地方可以看我其中的博客 :

【Git】安装和常用命令的使用与讲解及项目搭建和团队开发的出现的问题并且给予解决icon-default.png?t=N7T8https://blog.csdn.net/SAME_LOVE/article/details/134270273?spm=1001.2014.3001.5501

创建一个私有的仓库

如图 :

然后进行初始化

使用命令进行克隆,将仓库的文件复制到本地文件中

比如我们在开发中需要实现8个模块,我这里的创建8个文件来进行模拟。

在本地工作区间中,右键打开命令窗口

输入命令创建开发环境 :  git branch dev  ( 比如这是创建一个开发环境 )

输入命令创建测试环境 :  git branch test( 比如这是创建一个测试环境 )

比如现在已经有5个模块做完成了,需要上传到测试环境中。

使用gui打开图形操作界面,右键点击Git GUI 。点击文件图标,要1到5的文件让git管理

比如5个模块已经开发完成了,需要放入测试环境中进行测试,输入以下命令

 git commit -m "5个模块已经开发完毕,放入到测试环境中"

在查看模块的状态。

如图 : 

之后,我们进入到测试环境中,在本地的文件夹中是看不到在测试环境中的文件的,

输入命令进入测试环境 :  git checkout test

输入以下命令,将开发环境中的模块和测试环境中的模块进行整合,整合之后在测试环境中可以看到所有的模块。

命令 :  git merge dev

测试完成后,我们进入到开发环境中,将开发环境作为一个分支上传到远程仓库中

命令 :  git checkout dev   ( 进入开发环境 )

命令 :  git push origin dev  ( 将开发环境作为一个分支上传到远程仓库中 )

 

上传后,在远程仓库中的这个分支里,就可以看到当时开发环境的所有模块及代码和文件

我们再进入到测试环境中,将测试环境作为一个分支上传到远程仓库中

命令 :  git checkout test( 进入测试环境 )

命令 :  git push origin test( 将测试环境作为一个分支上传到远程仓库中 )

上传后,在远程仓库中的这个分支里,就可以看到当时测试环境的所有模块及代码和文件

三、标签

1. 命令

创建标签:

git tag   <tag_name>      # 创建一个轻量标签,标签名称 : <tag_name>
git tag -a  <tag_name>  -m "tag message"   #创建一个带注释的标签

查看标签:

git tag        # 列出所有标签

进入标签(切换到标签所指向的提交):

git checkout <tag_name>      # 切换到名为<tag_name>的标签所指向的提交

上传标签(推送标签到远程仓库):

git push origin  <tag_name>     # 将名为<tag_name>的标签推送到远程仓库
git push --tags                           # 将所有本地标签推送到远程仓库

删除标签 :

git tag -d <tag_name>    # 将名为<tag_name>的标签删除

git push origin :refs/tags/<tag_name>    # 将在远程仓库名为<tag_name>的标签删除

2. 标签规范

在 Git 中,标签的命名规范可以根据个人或团队的习惯来制定,但是一般来说,建议遵循以下规范:

1. 标签名应该简短、有意义,并且能够清晰地表达该标签所代表的含义。

2. 标签名应该使用英文单词,可以包含数字和连字符(-),但是不要包含空格或其他特殊字符。

3. 如果要创建一个版本号标签,建议使用语义化版本号(Semantic Versioning,简称 SemVer)规范,格式为 `v1.0.0.20231111`,其中 v1表示主版本号,第一个0表示次版本号,第二个0表示修订号,20231111表示日期。

v1.0.0.20231111可以再加个.后缀   

              为 : .alpha 表示开发环境
              为 : 
.beta 表示测试环境

              为 : .rc  表示灰度环境

              为 : .r  表示生成环境

4. 如果要创建一个带注释的标签,建议在注释中包含该标签的详细信息,例如该版本的功能特性、修复的 bug、重要的变更等。

总之,标签的命名规范应该清晰、简洁、有意义,并且符合团队或行业的惯例。这样可以帮助我们更好地管理代码历史,提高代码的可读性和可维护性。

3. 应用场景

进入开发环境(dev),创建一个相对开发环境的标签,并且上传到自己的远程仓库

命令 :  git checkout dev  ( 进入开发环境 )

命令 :  git tag v1.0.0.20231111.alpha   ( 创建标签 )

命令 :  git push origin v1.0.0.20231111.alpha  ( 将标签上传到远程仓库 )

上传后,在远程仓库汇中就可以看到该标签,并且标识上传的开发环境的分支。

进入生成环境(master),创建一个相对生成环境的标签,并且上传到自己的远程仓库

命令 :  git checkout master  ( 进入生成环境 )

命令 :  git tag v2.0.0.20231111.r  ( 创建生成环境标签 )

命令 :  git push origin v2.0.0.20231111.r  ( 上传到远程仓库 )

在远程仓库中可以看到已上传的两个标签

如图 : 

如果发现,上传到远程仓库的标签有误,需要删除。

我们需要先将本地的标签进行删除,在将远程仓库的标签删除才可。

命令 : git tag -d v2.0.0.20231111.r   ( 将本地的标签删除 )

命令 : git push origin :refs/tags/v2.0.0.20231111.r  ( 将远程仓库标签删除 )

在远程仓库中可以看到生成环境的标签已经删除

如图 : 

每篇一获

学习了 Git 的技术点后,你将会获得以下收获:

1. 更好的版本控制能力:掌握了 Git 的所有技术点后,你将能够更好地管理代码的版本历史,包括提交、分支、合并、重置等操作。

2. 更高效的团队协作能力:理解了 Git 的分支管理、远程仓库协作等技术点后,你将能够更好地与团队成员协作开发,解决代码冲突、进行代码审查等。

3. 更好的代码回退和恢复能力:学会了 Git 的重置、回滚、恢复等技术点后,你将能够更好地处理代码的回退和恢复,避免因代码错误而导致的严重问题。

4. 更好的代码发布和版本管理能力:掌握了 Git 的标签管理、版本发布等技术点后,你将能够更好地管理代码的发布过程,标记重要的版本,并进行版本控制。

5. 更好的代码分支管理能力:理解了 Git 的分支合并、分支策略等技术点后,你将能够更好地管理复杂的开发分支,保持代码库的整洁和稳定。

总之,学习了 Git 中所有的技术点将使你成为一个更优秀的软件开发者,提高你的代码管理和团队协作能力,从而更好地应对复杂的软件开发项目。 Git 是现代软件开发中不可或缺的工具,掌握了它的所有技术点将为你的职业发展带来巨大的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/138802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】树的基本性质(计算树的总结点数与叶结点数)

树的基本性质 ⭐️计算树的总结点与叶结点数&#x1f4ab;性质1&#x1f4ab;性质2&#x1f4ab;例题1&#x1f4ab;例题2 ⭐️计算树的总结点与叶结点数 &#x1f4ab;性质1 性质1 树中的结点数等于所有结点的度数之和加1 例如上面这棵树&#xff0c;A的孩子为B、C、D&…

使用ResponseSelector实现校园招聘FAQ机器人

本文主要介绍使用ResponseSelector实现校园招聘FAQ机器人&#xff0c;回答面试流程和面试结果查询的FAQ问题。FAQ机器人功能分为业务无关的功能和业务相关的功能2类。 一.data/nlu.yml文件   与普通意图相比&#xff0c;ResponseSelector训练数据中的意图采用group/intent格…

工业相机基本知识理解:工业相机IO接口,功耗和供电方式

I-input 相机接收外部信号&#xff0c;可用于触发相机&#xff08;硬触发&#xff09;&#xff0c;也可用于定制不同的 功能&#xff0c;例如使用不同信号宽度来改变相机的曝光时间。主要用于现场设 备控制相机使用&#xff0c;常常配合各种传感器使用 O-output 相机输出信号&a…

src/main/resources/fonts/songti.ttc not found as file or resource.

https://blog.csdn.net/Lewishhhh/article/details/122812272文章浏览阅读4.8k次&#xff0c;点赞2次&#xff0c;收藏7次。背景遇到个需求需要用Java导出PDF文件&#xff0c;权衡之下选择了iText&#xff0c;Java操作pdf的各个开源库之间的对比可以参考https://blog.csdn.net/…

阿里云从公网IP转为弹性公网IP,同时绑定多个IP教程

先将云服务器ECS 转为弹性IP 购买新的弹性辅助网卡 购买弹性公网iP 购买之后选择绑定资源选择第二步购买的网卡 进入ECS 终端 ,输入 ip address可以查看到eth1 的对应mac 地址 终端输入 vi /etc/sysconfig/network-scripts/ifcfg-eth1保存一下信息 DEVICEeth1 #表示新配置…

【Gradle-12】分析so文件和依赖的关系

1、前言 在包大小的占比中&#xff0c;so文件的占比往往是最高的&#xff0c;动辄几兆的大小多一个都会把包大小的指标打爆。 而在各厂商要求对手机CPU ARM架构进行分包适配的情况下&#xff0c;你更需要知道哪些依赖是没有适配v7a/v8a的&#xff0c;这将影响你的APP在应用市场…

数据结构-堆

一、什么是堆 先了解两种特别的二叉树 满二叉树 除最后一层无任何子节点外&#xff0c;每一层上的所有结点都有两个子结点的二叉树 完全二叉树 完全二叉树相对于满二叉树来说&#xff0c;最后一层叶子节点从左到右中间没有空缺的&#xff0c;像这样&#xff1a; 计算机科学…

Pycharm常用快捷键和替换正则表达式

原生快捷键的使用&#xff1a; 1.CtrlF&#xff1a;查找 2.CtrlZ&#xff1a;返回上一步 3.Alt 鼠标左键选择&#xff1a;多行同时编辑&#xff08;上、下、左、右键能够移动光标&#xff09; 按住Ctrl,左键点击&#xff0c;定位光标 编辑过程 URL常用的替换正则表达式&am…

深入浅出理解ResNet网络模型+PyTorch实现

温故而知新&#xff0c;可以为师矣&#xff01; 一、参考资料 论文&#xff1a;Identity Mappings in Deep Residual Networks 论文&#xff1a;Deep Residual Learning for Image Recognition ResNet详解PyTorch实现 PyTorch官方实现ResNet 【pytorch】ResNet18、ResNet20、…

使用Go语言抓取酒店价格数据的技术实现

目录 一、引言 二、准备工作 三、抓取数据 四、数据处理与存储 五、数据分析与可视化 六、结论与展望 一、引言 随着互联网的快速发展&#xff0c;酒店预订已经成为人们出行的重要环节。在选择酒店时&#xff0c;价格是消费者考虑的重要因素之一。因此&#xff0c;抓取酒…

php性能追踪与分析

PHP扩展下载&#xff1a;https://pecl.php.net/package/xhprof php.ini配置 [xhprof] extensionxhprof xhprof.output_dir/temp/xhprof auto_prepend_file /temp/inject_xhprof.php if(php_sapi_name() cli) {return; }$xhprof_config[enabled]1;if(!empty($xhprof_config…

Maven-构建工具

一、背景 开发者编写完成源码&#xff0c;还需要进行编译、测试、打包、部署等一系列操作。在一些小型项目中&#xff0c;还可能通过手动方式进行以上操作。但是在大型项目中&#xff0c;难以确定以上操作的顺序&#xff0c;而且会耗费更高的时间成本。 1.构建工具 构建工具…

【Proteus仿真】【Arduino单片机】LCD1602-IIC液晶显示

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602液晶显示各种效果。 二、软件设计 /* 作者&#xff1a;嗨小…

20道高频JavaScript面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…

day3 ARM

【昨日作业】 .text .global start _start: mov r0,#0 存放sum mov r1,#1 存放相加的数值 loop: cmp r1,#100 bhi wh add r0,r0,r1 add r1,r1,#1 b loop wh: b wh .end 【内存读写指令】 通过内存读写指令可以实现向内存中写入指定数据或者读取指定内存地址的数据 c语言内存…

自动驾驶学习笔记(七)——感知融合

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 感知融合 卡尔曼滤波 融合策略 实…

数据分析实战 | 线性回归——女性身高与体重数据分析

目录 一、数据集及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 实现回归分析类算法的Python第三方工具包比较常用的有statsmodels、statistics、scikit-learn等&#…

工业镜头接口类型

现有产品主要有以下接口 1、C:最常见的工业相机接口&#xff0c;受限于接口物理尺寸大小&#xff0c;最大靶面目前是4/3” 2、M42:M421.0,2k和4k线阵相机使用 3、M58S:M580.75,大靶面相机使用&#xff0c;可以转C(限于CH080相机&#xff0c;靶面4/3”)&#xff0c;可以转F,可以…

数据结构预算法--链表(单链表,双向链表)

1.链表 目录 1.链表 1.1链表的概念及结构 1.2 链表的分类 2.单链表的实现(不带哨兵位&#xff09; 2.1接口函数 2.2函数的实现 3.双向链表的实现&#xff08;带哨兵位&#xff09; 3.1接口函数 3.2函数的实现 1.1链表的概念及结构 概念&#xff1a;链表是一种物理存储结…

论文阅读——Detection Hub(cvpr2023)

Detection Hub: Unifying Object Detection Datasets via Query Adaptation on Language Embedding 一、要解决的问题 大规模数据集可以提高模型性能&#xff0c;但是当训练多类别单一模型时&#xff0c;大规模数据集不能用在目标检测任务上&#xff0c;因为两个困难&#xff1…