【Git之窗】(五)Git分支管理的一个实例

2024-08-26 21:18
文章标签 管理 实例 git 分支 之窗

本文主要是介绍【Git之窗】(五)Git分支管理的一个实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   上一篇博客中介绍了Git分支管理的基础概念,这篇博客模拟一个实际场景来分析下为什么要提倡要“频繁”地使用Git分支。

   -------------------------------------------


   人物:

   一名姓“程”,名“序员”的单身程序员,29岁,黑框眼镜、格子衫、牛仔裤、运动鞋、双肩包……


   ------------------------------------------


   场景:

   1、开发某“**云平台”项目。


   2、为了实现某个新的需求,创建一个分支“iss53”。

        


            3、在这个分支上继续展开工作,并且执行了一次commit操作,此时"iss53"分支已经指到了C3版本的快照上。

             

        之后,“序员”仍然在继续工作……

  ---------------------------------------------------------------


   突发情况:


   “序员”突然接到一个电话说线上版本有个很严重的bug需要紧急修补,前提是生产服务器上的程序已经发版,此时你该怎么办?要知道,此时你已经在上线的版本上写了一些新的功能,但是没有测试,你会怎么办?


   ---------------------------------------------------------------


    我的解决方案:

   (1)Git方案

    1、提交iss53上对新需求开发的版本, 之后checkout到master分支上面,这个时候我的工作目录中的内容已经和线上那个版本的代码一模一样了

    2、我在master的基础上,新建“hotfix”分支,此时hotfix分支指向了C4版本的代码:

       

            紧接着,在hotfix分支上修改这个线上的bug,此时序员已经加班到了凌晨1点钟……

    突然间,bug消失了,紧接着测试也通过了,太爽了!

   3、通过“git rebase”或者“git merge”命令,把hotfix分支合并到master分支上面,如图:

            

          4、此时可以通过命令“git branch -d hotfix”删除掉hotfix分支了,并且通过"git checkout iss53"命令切换到了iss53分支,继续新需求的开发工作,如图:

               

           如果想要把解决线上bug的修复代码也同步到"iss53"上面,执行“git rebase master”,此时的“iss53”分支已经是兼具“解决了线上bug”同时“在开发新功能”的一个分支了。


   (2)SVN方案

    由于已经写了一部分新需求的代码,首先通过“与资源库同步”按钮,找到最近在每一层、每一个模块里修改过的代码,做好备份后,“还原”到之前的代码版本,此时与线上发版的代码一模一样了,之后解决bug、测试、打包、发版。

    紧接着,将之前做修改的那部分代码提取出来,再copy到当前工作目录当中,测试、打包、发版。


    比较针对这个突发问题的解决,很显然Git的使用要优于SVN的解决方案,所以,建议使用前者。

 


这篇关于【Git之窗】(五)Git分支管理的一个实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109704

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导