gitlab建立新分支提交,cherry-pick部分更新

news2024/11/17 11:50:36

gitlab介绍

  • GitLab是一个基于Git的在线代码托管和协作平台,提供源代码管理、单元测试、CI/CD构建、代码审查等功能。它是一个开放源代码的Git仓库管理系统,使用 Ruby on Rails 构建
  • GitLab 不仅具有自己的 Git 仓库管理系统,还具有很多其他的功能,如审计日志、代码合并、CI/CD流水线、问题跟踪等。它支持公共和私有仓库,可以自己搭建也可以使用 GitLabSaaS服务
  • GitLab使用简单,功能强大,被广泛应用于企业和开源社区。GitLab也提供了丰富的APIWebhooks接口,使得用户可以方便地将GitLab与其他系统进行集成
  • Gitlab 官网提供了 gitlab.comSaaS 服务,用户可以直接注册并使用,但是需要注意的是官网服务是收费的。自部署 Gitlab 则需要用户自己搭建gitlab实例,用户需要下载gitlab的开源代码,然后根据服务器配置和需求进行相应的安装和配置,需要使用者有一定的系统操作和管理经验。自部署gitlab一般是免费的,但需要考虑到运维和维护的成本。一般研发经理或技术leader承担此项工作。

cherry-pick功能介绍

  • pick的意思是“采摘”,cherry的意思是“樱桃”,连在一起就是“摘樱桃”。所以该功能的意思就是“挑拣自己需要的提交”
  • Gitlab cherry-pick是从一个分支中提取单个提交并将其应用于其他分支的操作。这通常用于将特定更改(如修复错误或特定功能)应用于其他分支而不必将所有更改都合并。
  • 通过Gitlab cherry-pick,您可以在另一个分支中应用单个提交。这允许团队成员在需要时将已有的特定修补程序或修复应用于其他分支。
  • 这可使您避免在每个分支中重复更改,从而增强了代码库的可维护性和代码重用性。
  • 要使用Gitlab cherry-pick,您需要了解以下内容:
    • 1.要选择具体提交相应的SHA(ID)
    • 2.使用Gitlab cherry-pick命令将提交引入到其他分支中。
    • 3.检查提交是否已成功应用于目标分支中。

实际操作

首先,你需要在GitLab上新建一个分支。

  1. 打开项目,点击“Branch”按钮,输入新分支名,点击“Create branch”创建一个新分支。

  2. 克隆新分支到本地:

git clone [项目地址]
cd [项目名称]
git checkout -b [新分支名称] origin/[新分支名称]
  1. 找到需要 cherry-pick 的提交,可以使用以下命令查看提交历史:
git log
  1. 执行 cherry-pick 命令,将提交应用到当前分支(新分支):
git cherry-pick [提交ID]
  1. 如果涉及到冲突,需要解决冲突后再提交:
git add [文件名]
git cherry-pick --continue
  1. 如果需要 cherry-pick 多个提交,可以使用以下命令:
git cherry-pick [提交ID1] [提交ID2] ...
  1. cherry-pick 完成后,需要将新分支推送到 GitLab
git push origin [新分支名称]

这样就完成了 cherry-pick 部分更新到新分支的操作。

界面操作

  • 如果不熟悉命令操作,gitlab有操作界面,在界面上操作也很方便

  • 或者直接在Intellij idea之类的可视化集成开发环境的界面里操作,也很方便

  • 下面以一次合并需求和在Intellij idea操作为例,讲解一下。

  • 需求场景:研发的产品基础版已归档和推向市场使用,高级版功能开发还在进行中。高级版的功能开发,各个开发人员提交合并请求,合并到主线。此时市场客户提出一个新需求,我们需要进行代码变动和新增,考虑到系统的稳定性,这么多新功能代码肯定不能直接部署给客户使用,完整的再对整个系统走一遍测试流程,在人力和时间成本上吃不消。所以针对客户的更新部署版本,只是原有基础版功能,加上这个客户提出的新功能,其他功能代码要排除出去。

  • 解决办法:针对基础版归档时间点,单独建立一个新分支作为基础版归档,然后使用 cherry-pick 功能,把客户提出的新功能的开发的代码的提交记录,按照时间顺序,一个个pick到本分支,再一起提交即可。

  • 在主分支,根据归档时间,选择对应的提交记录,右键,建立新分支(因为我已经操作过了,所以这里多了一个分支标志)
    在这里插入图片描述在这里插入图片描述

  • 右下角可以找到新加的分支名称,点击,在弹出框里点击提交Push...,提交新分支到gitlab仓库。
    在这里插入图片描述

  • 推送到仓库后,新分支就建立成功了,可以去cherry-pick提交了,从下往上找,把自己需要的bug修复和某个功能的代码提交,右键,挨个pick即可,如果有代码冲突手动处理下
    在这里插入图片描述

  • 这里的关键,是要求代码开发人员提交代码时,描述要写的很清晰,一次提交只针对某一块功能,而且新功能代码大多比较独立。如果提交描述不清晰,或者提交内容与描述不符,或者代码都糅杂在一起、独立性很差,使用这个功能就会很费劲了,需要人工合并和删除不需要的代码

  • 所有需要的提交都pick完,提交推送到仓库即可,新的版本和功能就完成了,剩下的打包交给测试人员吧
    在这里插入图片描述

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

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

相关文章

AI 加持的代码编写实战:快速实现 Nginx 配置格式化工具

本篇文章聊聊如何使用 GPT 快速完成一个开源小项目,解决实际的问题,顺手点亮 GitHub 上 Nginx 开源社区的贡献者图标。 “Talk is Cheap,Show you the Code。” 写在前面 整理了一篇本该上个月就发出的内容。 前段时间,有个投…

浅谈JDK8的垃圾回收器

JDK1.8默认使用Parallel Scavenge作为年轻代的垃圾回收器,使用Parallel Old作为老年代的垃圾回收器,又称为PS MarkSweep。 Parallel Scavenge 收集器 Parallel Scavenge收集器又称为吞吐量优先收集器,和ParNew收集器类似,是一个新生代收集器。…

【OpenCV DNN】Flask 视频监控目标检测教程 01

欢迎关注『OpenCV DNN Youcans』系列,持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 01 【OpenCV DNN】Flask 视频监控目标检测教程 01 1. 面向Python程序的Web框架2. Flask 框架的安装与使用2.1 Flask 安装2.2 Flask 框架例程2.3 绑定IP和端口2.4 Flask路…

2023-5-20基于52单片机的智能家居系统(蓝牙)

资料已上传在微信公众号:风吹摇铃 奔赴星海 此系统可根据开发板原理图搭配外载模块实现功能,也可以根据原理图焊接或者PCB焊接。 注意:根据开发板搭载外部模块实现功能,需根据开发板原理图修改代码 0、整理及编写了19个常用的5…

NameServer路由注册与发现

NameServer在RocketMQ中主要承担的就是路由的管理、服务注册、以及服务的发现。在RocketMQ这承担着很重要的责任。 整体架构: 消息生产者在发送消息前需要考虑的问题就是,我需要发给谁?地址在哪儿?对于消费者也一样。那么NameSer…

软件工程 | 期末复习

一、软件与软件危机 1、软件发展经历三个阶段:程序设计、程序系统、软件工程 2、软件的概念:软件是计算机系统与硬件相互依存的另一部分,包括程序、数据以及相关文档的完整集合,软件程序数据文档 数据:使程序能够适…

测试人员转型是大势所趋:我的十年经验告诉我,你必须要行动起来了。

做测试十多年,有不少人问过我下面问题: 现在的手工测试真的不行了吗? 测试工程师,三年多快四年的经验,入门自动化测试需要多久? 自学自动化测试到底需要学哪些东西? 不得不说,随着行…

学习open62541 --- [76] 使用智能指针处理内存释放问题

在使用监测项时,一般都会加一个context,然后在回调函数里使用这个context,这就需要保证context的内存空间在执行回调函数时是有效的。往往有以下三种方法: 使用静态内存空间:使用static创建静态变量,然后把…

【Python 爬虫常见的报错及其解决方法】零基础也能轻松掌握的学习路线与参考资料

Python 爬虫被广泛应用于数据采集和分析。然而,爬虫在运行过程中常常会遇到各种问题和错误,降低了爬虫效率、准确性和可靠性。因此掌握爬虫常见报错及其解决方法是非常关键的。本文将介绍 Python 爬虫常见的报错及其解决方法,并提供参考资料和…

内存泄漏的原因,内存泄漏如何避免?内存泄漏如何定位?

1. 内存溢出 内存溢出 OOM (out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个int,但给它存了long才能存下的数,那就是内存溢出。 2. 内存泄…

PyTorch LSTM和LSTMP的原理及其手写复现

PyTorch LSTM和LSTMP的原理及其手写复现 0、前言全部参数的细致介绍代码实现Reference 0、前言 关于LSTM的原理以及公式其实在这篇博客一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】讲的非常清晰明了了。 这里就是写出LSTM的pytorch的实现,…

【随笔记】全志 T507 PF4 引脚无法被正常设置为中断模式的问题分析

相关信息 硬件平台:全志T507 系统版本:Android 10 / Linux 4.9.170 问题描述:PF4 无法通过标准接口设置为中断模式,PF1、PF2、PF3、PF5 都可以。 分析过程 一开始以为是引脚被其它驱动占用引起,或者该引脚不具备中断…

高光谱成像技术在果蔬品质检测中的应用

在当前市场经济背景下,食品安全问题是消费者最为关心的问题之一,尤其是果蔬产品,农药残留问题和品质问题直接关系着消费者的权益和人身安全。针对传统化学检测的缺陷,本文结合高光谱成像技术,对其在果蔬品质与安全无损…

【C++】多态的概念/重写/虚表/抽象类

多态 多态的概念多态的定义和实现重写抽象类多态的原理虚表的构建原理虚函数的调用原理 多态的概念 多态就是多种形态,传递不同的对象,会调用不同的方法。 多态的定义和实现 那么在C语法中,多态是如何实现的呢? 我们首先要在继承…

vue学习 - 基础篇

初始工程结构 这里我们使用script标签从cdn获取vue.js, 而不是使用脚手架vue-cli, 因为cdn比较方便一点, 也不用配置node之类的比较麻烦 index.html <!DOCTYPE html> <html><head><title>VueJS Course</title><link rel"stylesheet"…

第三篇、基于Arduino uno,用oled0.96寸屏幕显示dht11温湿度传感器的温度和湿度信息——结果导向

0、结果 说明&#xff1a;先来看看拍摄的显示结果&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;本次使用的oled是0.96寸的&#xff0c;别的规格的屏幕不一定适用本教程&#xff0c;一般而言有显示白色、蓝色和蓝黄一起显示的&#xff0…

RabbitMQ日常使用小结

一、使用场景 削峰、解耦、异步。 基于AMQP(高级消息队列协议)协议来统一数据交互,通过channel(网络信道)传递信息。erlang语言开发&#xff0c;并发量12000&#xff0c;支持持久化&#xff0c;稳定性好&#xff0c;集群不支持动态扩展。 RabbitMQ的基本概念 二、组成及工作流…

可见性原子性有序性的+线程传参的方式+Java如何实现多个线程之间共享数据+线程间通信+死锁产生

//为了均衡CPU和内存的速度差异,增加了缓存 导致了可见性的问题; //操作系统增加了进程 线程 分时复用CPU,均衡CPU和io设备的速速差异 导致了原子性问题; //jvm指令重排序(优化指令排序) 导致了有序性的问题 可见性问题是指 线程A修改共享变量,修改后CPU缓存中的数据没有及时同…

Emacs之目前最快补全插件lsp-bridge(八十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

数据分析12——Pandas中数据合并方法

0、前言&#xff1a; 在pandas中进行数据合并的操作和数据库中的join操作非常类似。 1、merge横向合并&#xff1a; 前言&#xff1a;该函数只能做横向合并函数名&#xff1a;merge()函数参数&#xff1a; left: 数据类型为’DataFrame | Series’&#xff0c;需要进行合并的…