“Git实践指南:深入探索开发测试上线、分支管理与标签“

news2025/1/15 12:52:37

文章目录

  • 引言
  • 一、Git的分支的使用
    • 1.分支
    • 2.标签
    • 3.分支与标签的关系
    • 4. 分支在实际中的作用
    • 5. 四个环境以及各自的功能特点
    • 6. 分支策略
    • 分支应用场景
  • 二、Git的标签
    • 3.1 标签的基本使用
    • 3.3 标签的共享与推送
  • 总结

在这里插入图片描述

引言

在现代软件开发中,版本控制是一个关键的环节,而Git作为最流行的分布式版本控制系统,为团队协作、代码管理和发布提供了强大的工具和功能。本篇博客将深入探讨Git的使用,重点讲解开发测试上线流程、分支管理和标签的应用技巧,帮助读者更深入地理解和应用Git,提高开发效率和代码质量。

一、Git的分支的使用

在这里插入图片描述

1.分支

dev/test/pre/pro(即master)
dev-开发环境–Windows(自己的电脑)
test-测试环境–Windows/Linux
pre-灰度环境
pro-正式环境

2.标签

Tag格式: 主版本号.次版本号.修订号-类型标签,其中类型标签可为:alpha、beta、rc、r。
Tag示例:1.0.0-alpha、1.0.0-beta、1.0.0-rc、1.0.0-r

注1:有的公司在版本命名时,前面加v,“-”替换成“_”,更加详细一点还可以在修订号后面添加发布日期
v1.0.0.191220_r,这都是可以的

3.分支与标签的关系

dev–>alpha
test–>beta
pre–>rc
pro–>r

4. 分支在实际中的作用

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,
不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

怎么办?
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,
而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作

5. 四个环境以及各自的功能特点

四个环境分别是:dev、test、pre、pro(master),中文名字:开发环境、测试环境、灰度环境、生产环境

dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。
test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定
pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。
pro(master)环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。

6. 分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:
1.首先,pro分支(即master)应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

2.那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,
再把dev分支合并到master上,在master分支发布1.0版本

3.修复bug时,我们会通过创建新的bug分支(即test)进行修复,然后合并,最后删除;

4.当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

2.2 高级分支策略与开发流程
在实际项目中,我们经常需要使用不同的分支策略来管理开发流程。本节将深入讨论主分支保护与长期分支管理、功能分支与短期任务开发以及临时分支与bug修复的最佳实践。

2.3 分支合并技巧与最佳实践
分支合并是Git中常见的操作,但也容易引发冲突和历史混乱。本节将介绍使用rebase进行线性历史和干净的合并、利用补丁和cherry-pick选择性合并,以及小组协作中的分支推送和拉取策略。

2.4 分支策略与工作流程案例分析
不同的团队和项目可能适用不同的分支策略和工作流程。在本节中,我们将分析GitFlow工作流程和GitHub Flow在敏捷开发中的应用,并探讨如何自定义分支策略以适应团队的需求和项目的特点。

分支应用场景

  1. 准备新建一个空文件夹存放
  2. 新建一个私有的仓库,并且初始化完成,复制好ssh克隆网址
  3. 进入目标文件目录,并且查看分支
    在这里插入图片描述
    master为主分支
  4. 增加分支(git branch dev)并且切换dev分支 git checkout dev 删除dev要在master分支中进行,不能在dev中
    在这里插入图片描述
    然后 在dev中创建十个文件准备测试
  5. 搭建test分支
    在这里插入图片描述
  6. dev 提交六个
    在这里插入图片描述
    在这里插入图片描述
    此时还有5个未暂存
  7. 切换测试分支
    在这里插入图片描述
    这些都是未提交的
    然后test合并dev的文件
    在这里插入图片描述
    此时master能看到的只有5个

然后test测试分支把不合格的文件删掉
在这里插入图片描述
删掉之后git status就会看到
然后图形化,提交
在这里插入图片描述
然后切换到master
再合并test
在这里插入图片描述
我这里之前的不合格没提交,所以保留了下来
这个时候本地分支就搞好了,接下来搞远程分支
切换到dev分支,再进行远程操作,输入(git push origin dev回车)
在这里插入图片描述
在这里插入图片描述
然后是test,master
在这里插入图片描述
接下来为用到的代码作解释

  • git branch 查看分支
  • git branch dev 创建分支
  • git checkout dev 切换到该分支
  • git checkout -b dev 创建切换到该分支
  • git branch -d dev 删除分支
  • git push origin dev 推送
    其中dev 是分支名,我把分支名都用dev代替
    在这里插入图片描述

二、Git的标签

3.1 标签的基本使用

增删查的使用
在这里插入图片描述

3.2 语义化版本控制与标签管理
在软件开发中,语义化版本号能够清晰地说明不同版本之间的差异和兼容性。本节将探讨如何使用语义化版本号规范项目的版本,并讲解如何根据版本号进行标签管理和发布。

3.3 标签的共享与推送

  • dev分支推送alpha标签
    在这里插入图片描述
  • master分支推送r标签
    在这里插入图片描述
    此刻就有两个标签了
    在这里插入图片描述

现在出现这厶一种情况,原有的分支修复了代码异常问题需要重新提交,可以这么做
在这里插入图片描述
把这两个提交,然后在dev分支重新增加标签,并推送

在这里插入图片描述
此时有三个了
在这里插入图片描述
然后再删除
先删除本地的,再删除远程的
在这里插入图片描述

在这里插入图片描述
好了,到这里就完成了

总结

通过本篇博客的深度讲解,我们详细探索了Git的高级使用技巧,包括开发测试上线流程、分支管理和标签的应用。希望读者能够从中获得实际可行的工具和方法,提升团队的协作效率、代码质量和发布过程的可靠性。请注意,以上只是每个知识点的概述,您可以根据需要进一步扩展和深入研究每个主题。祝愿您在Git实践中取得更好的成果!

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

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

相关文章

kubernetes prometheus监控

目录 一、部署prometheus 二、 部署nginx监控实例 三、部署prometheus-adapter 一、部署prometheus 清理镜像方便后面一次性上传 docker rmi docker images | grep -v REPOSITORY | awk {print $1":"$2} 删除 docker load -i kube-prometheus-stack-0.58.0.tar…

计蒜客详解合集(3)期

目录 T1236——分苹果 T1113——整理药名 T1153——整数奇偶排列 T1249——漂亮的字符串 T1168——统计素数个数 T1160——甲流病人筛选 T1236——分苹果 分享一道特别简单的题。 蒜头君要把一堆苹果分给 个小朋友,要使每个人都能拿到苹果,而目每…

Python学习笔记--自定义类型的枚举

三、自定义类型的枚举 但有些时候我们需要控制枚举的类型,那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum, uniqueEnum(Month, (Jan, Feb, Mar, Apr, M…

相机内外参实践之点云投影矢量图

目录 概述 涉及到的坐标变换 深度值可视化 3D点云的2D投影实现 实现效果 参考文献 概述 Camer的内外参在多模态融合中主要涉及到坐标系变换,即像素坐标、相机坐标以及其他坐标系。这篇就针对点云到图像的投影与反投影做代码实践,来构建一张具有深度…

【2023CANN训练营第二季】——Ascend C算子开发进阶—Ascend C Tiling计算

了解Tiling基本概念 在这一小节中接触到了一个新的概念,叫Tiling计算,指的是在Ascend C 算子开发过程中,矢量的算子流程分为3个基本任务:CopyIn,Compute,CopyOut。CopyIn任务负责将Global Memory上的输入T…

Python 列表元素里面含有字典或者列表进行排序

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 示例1:列表里面含有列表进行排序 s [[1, 2], [100, 2], [33, 3], [25, 6]] s.sort(keylambda k: k[0]) print(s)结果: [[1, 2], [25, 6], [33, 3…

基于FPGA的PS端的Si5340的控制

1、功能 Si5340/41-D可以输出任意频率,当然有范围,100Hz1GHz。外部输入为24M或者4854M的XTAL,VCO在13500~14256Mhz之间,控制接口采用IIC或者SPI。 芯片架构图 2、IIC控制方式 3、直接上控制代码 使用米联客ZU3EG,将…

Learn runqlat in 5 minutes

内容预告 learn X in 5 系列第一篇. 本篇主要介绍进程时延统计方式和 rawtracepoint. runqlat "高负载场景下应用为何卡顿", "进程 A 为什么得不到调度". 当我们在工作生活中产生这样的疑问, 目标进程的调度时延是一个不错的观测切入点. runqlat 可以帮…

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤

第6课、用通配符进行过滤 LIKE:匹配文本 LIKE:针对未知值进行过滤。通配符搜索只能用于文本字段。 1)百分号%通配符 %表示任何字符出现任意次数。 需求:找出所有以词 Fish 起头的产品 SELECT prod_id, prod_name FROM Product…

Linux-基础知识

1.快捷键 ctrlc 强制停止 ctrld 退出或登出 history 查看历史命令(!/ctrlr输入内容去匹配历史命令) 光标移动快捷键 ctrla,跳到命令开头 ctrle,跳到命令结尾 ctrl键盘左键,向左跳一个单词 ctrl键盘右键&…

Python 使用tkinter的Menu菜单command参数与bind方法共用触发事件

用普通函数作为媒介,使用event_generate()方法模拟触发bind()事件来创建一个模拟的event对象,并将其传递给绑定的事件处理函数。 运行结果 示例代码 import tkinter as tk# 菜单事件 def menuEvent(event):print(event.x, event.y)label.config(textf鼠…

【Linux】Centos7 shell实现MySQL5.7 tar 一键安装

🦄 个人主页——🎐个人主页 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油!&…

SpringBoot集成easyexcel实现动态模板导出

添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-o…

补坑:Java的字符串String类(3):再谈String

不太熟悉字符串的可以看看这两篇文章 补坑&#xff1a;Java的字符串String类&#xff08;1&#xff09;-CSDN博客 补坑&#xff1a;Java的字符串String类&#xff08;2&#xff09;&#xff1a;一些OJ题目-CSDN博客 字符串创建对象 public static void main(String[] args) …

【pytorch深度学习】使用张量表征真实数据

使用张量表征真实数据 本文为书pytorch深度学习实战的一些学习笔记和扩展知识&#xff0c;涉及到的csv文件等在这里不会给出&#xff0c;但是我会尽量脱离这一些文件将书本想要表达的内容给展示出来。 文章目录 使用张量表征真实数据1. 加载图像文件2. 改变布局3. 加载目录下…

Nacos入门到运行-超详细~windwos

&#x1f4da;目录 ⚙️简介:⚡️Nacos下载⌛解压到文件⚙️配置信息☘️修改 application.properties ⛵运行程序☘️安全问题☄️程序出现问题查看方式 ⛳Nacos开启鉴权⚡️跳过Token获取数据⚓接口请求&#xff1a; ✍️结束&#xff1a; ⚙️简介: Nacos:正如官网说的,一个…

【JAVA学习笔记】 68 - 网络——TCP编程、UDP编程

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter21/src 网络 一、网络相关概念 1.网络通讯 1.概念:两台设备之间通过网络实现数据传输 2.网络通信:将数据通过网络从一台设备传输到另一台设备 3. java.net包下提供了一系列的类或接口&a…

Ansible命令使用

ansible ansible的命令 ansible命令模块Pingcommand 模块shell 模块copy 模块file 模块fetch 模块cron 模块yum 模块service 模块user 模块group 模块script 模块setup 模块get_url模块stat模块unarchive模块unarchive模块 ansible的命令 /usr/bin/ansible  Ansibe AD-Hoc 临…

Xilinx DDR3 MIG系列——Xiinx DDR3官方手册ds176_7series_MIS

本节目录 一、官方手册ds176_7series_MIS 1、DDR3功能支持 2、MIG官方手册资源 3、Vivado DDR3 MIG IP资源表的导出与查看本节内容 Xilinx官方提供了手册&#xff0c;以便硬件开发者设计DDR3的硬件电路&#xff0c;和FPGA开发者使用MIG官方ip核完成项目的逻辑开发。 针对Xilin…

类和对象(2):构造函数,析构函数

一、构造函数 1.1 概念 构造函数是一种特殊的成员函数&#xff0c;名字与类名相同&#xff0c;创建类类型对象时编译器自动调用——初始化对象&#xff0c;在对象整个生命周期内只调用一次。 PS: 1. 构造函数无返回值&#xff1b;2. 构造函数支持重载。 class Date { public:…