利用cherry pick巧妙地将某次提交单独合并到其他分支

0. 引言

最近在进行系统的多版本并行开发,涉及一些共有基础功能提交时就遇到了麻烦,一份代码需要向多个版本分支进行同步,以保证多版本都能有更新该基础功能。

多次对比提交的方式显然会带来巨大的工作量。但实际上我们可以通过git的cherry-pick指令来简化操作
在这里插入图片描述

1. cherry-pick简介

cherry-pick 其作用就是将其他分支的单个提交合并到当前分支,其名字也很贴合——“摘樱桃”,从分支树上摘下来指定的几颗。

其应用场景包括:
合并单个提交:当我们只想将某个分支上的某一次提交合并到当前分支时,可以使用cherry-pick命令,而不需要合并整个分支

修复bug:当我们在一个分支上修复了一个bug,并希望将这个修复同步应用到其他分支时

共性功能:当我们在一个分支上开发了一个新功能,这个功能可能属于基础性通用功能,也希望应用到其他版本时

2. idea界面操作

1、首先为了模拟操作,我这里创建了两个分支:feature-v1.0, feature-v2.0。我们需要模拟的场景是:

  1. 在v1.0版本中开发并提交了一次通用功能
  2. 需要将v1.0提交的这次通用功能合并到v2.0版本中

我们首先在v1.0中模拟一次代码提交
在这里插入图片描述

2、然后右下角将分支切换到v2.0
在这里插入图片描述
3、点击左下角的Git选项,打开git提交历史,并在菜单左侧选中来源分支,即v1.0
在这里插入图片描述
4、找到我们要合并的提交,并选中,然后点击窗口中的樱桃图标,或者右键菜单中点击Cherry-Pick,如果需要合并多次提交的话,就都选中然后点击cherry-pick即可

在这里插入图片描述
5、成功合并后会看到提示信息
在这里插入图片描述
6、需要注意的是,如果前面选择的分支是本地分支,那么还要将合并的代码提交到远端分支
在这里插入图片描述
7、合并后,我们就可以在本地以及远端分支都看到这次提交的代码了
在这里插入图片描述
在这里插入图片描述

3. git指令操作

1、首先进入到项目目录下,切换分支到来源分支v1.0

git checkout feature-v1.0

然后执行git log指令,查看历史提交记录
在这里插入图片描述
2、每次提交都有一个唯一的hash标识,找到你想要合并的那次提交,复制其hash

hash如:4bfc117cd967eaa56e0835847e901becf3787b25
在这里插入图片描述

3、切换到目标分支

git checkout feature-v2.0

4、执行cherry-pick指令,其指令语法如下,其中commit表示某次提交的hash值或者分支名,如果是分支名会将这个分支的提交都合并过去

git cherry-pick <commit>

如果需要合并多次,就将hash值用空格隔开即可

git cherry-pick hash1 hash2 hash3

我们将之前复制的hash值贴过来执行

git cherry-pick 4bfc117cd967eaa56e0835847e901becf3787b25

如此代码就合并过来了
在这里插入图片描述
5、当然这里还只是提交到本地分支,如果要提交到远端的话,执行git push推送即可

在这里插入图片描述

总结

如上,我们就完成了针对某次提交的单独合并操作,实际操作时更加建议使用idea的可视化操作,毕竟可能会涉及到代码冲突,这时就需要我们手动解决冲突了

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

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

相关文章

「Python Socket超能力:网络世界的隐形斗篷!」

Hi&#xff0c;我是阿佑&#xff0c;今天将带领大家揭开Python Socket编程的神秘面纱&#xff0c;赋予我们的网络应用隐形斗篷般的超能力&#xff01; 深入探讨Socket编程的革命性力量&#xff0c;教你如何用Python的Socket模块来构建强大的网络应用。从简单的HTTP服务器到复杂…

MagicLens:新一代图像搜索技术和产品形态

MagicLens&#xff1a;Self-Supervised Image Retrieval with Open-Ended Instructions MagicLens: 自监督图像检索与开放式指令 作者&#xff1a;Kai Zhang&#xff0c; Yi Luan&#xff0c; Hexiang Hu&#xff0c; Kenton Lee&#xff0c; Siyuan Qiao&#xff0c; Wenhu …

Selenium操作浏览器Cookie(增/删/查看cookie)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

更新.gitmodules的子模块仓库地址,但是没有生效,需要运行命令

当你更新了 .gitmodules 文件中的子模块仓库地址后&#xff0c;为了使这些更改生效并同步到实际的子模块目录&#xff0c;你需要执行以下步骤&#xff1a; 同步.gitmodules的更改&#xff1a; 使用 git submodule sync 命令来同步.gitmodules文件中的URL修改到你的本地配置。执…

在VS Code中进行Java的单元测试

在VS Code中可以使用 Test Runner for Java扩展进行Java的测试执行和调试。 Test Runner for Java的功能 Test Runner for Java 结合 Language Support for Java by Red Hat 和 Debugger for Java这两个插件提供如下功能&#xff1a; 运行测试&#xff1a; Test Runner for …

Flutter 中的 Flex 小部件:全面指南

Flutter 中的 Flex 小部件&#xff1a;全面指南 Flutter 的布局系统非常灵活&#xff0c;允许开发者以声明式的方式构建复杂的用户界面。Flex 是 Flutter 中用于创建灵活布局的核心小部件之一&#xff0c;它提供了水平和垂直的线性布局能力。本文将详细介绍 Flex 小部件的使用…

QT学习(20):QStyle和自定义样式

QStyle 样式&#xff08;继承自QStyle类&#xff09;代表控件的绘制并封装GUI的外观。QStyle是一个封装了GUI外观的抽象基类。Qt使用QStyle去执行几乎所有的内置控件的绘制&#xff0c;确保控件外观和原生控件风格风格相同。 class Q_WIDGETS_EXPORT QStyle : public QObject{…

【OpenCV】图像通道合并与分离,ROI

介绍可以实现图像通道合并与分离的API&#xff0c;这只是一种方式&#xff0c;后续还会介绍其他的合并与分离方法&#xff0c;以及ROI区域截取的方法。相关API&#xff1a; split() merge() Mat对象() 代码&#xff1a; #include "iostream" #include "ope…

Hive的小文件处理

针对ORC存储格式的小文件 --orc合并小文件的特定语法,使用concatenate(连接、使连续)关键字 --非分区表 alter table table_name concatenate;--分区表 alter table table_name partition(dtxxx) concatenate;针对TEXTFILE存储格式的小文件 --将这些小文件进行合并,这里使用d…

MySQL进阶之(九)数据库的设计规范

九、数据库的设计规范 9.1 范式的概念9.1.1 范式概述9.1.2 键和相关属性 9.2 常见的范式9.2.1 第一范式9.2.2 第二范式9.2.3 第三范式9.2.4 第四范式9.2.5 第五范式&#xff08;域键范式&#xff09; 9.3 反范式化9.3.1 概述9.3.2 举例9.3.3 反范式化新问题9.3.4 通用场景 9.4 …

18 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 地表水储量变化Glads水文数据处理

18 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 地表水储量变化 0 引言1 Grace陆地水储量过程整合0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算地下水储量变化。本篇简单介绍…

2024.05.28学习记录

1. 小林coding 计网复习 2.代码随想录刷题. 图论.和复习数组.链表 3.rosebush完成select组件

在Go语言中如何实现变参函数和函数选项模式

在Go语言编程中,我们经常会遇到需要给函数传递可选参数的情况。传统的做法是定义一个结构体,将所有可选参数作为结构体字段,然后在调用函数时创建该结构体的实例并传递。这种方式虽然可行,但是当可选参数较多时,创建结构体实例的代码就会变得冗长และ不太直观。 Go语言的一个…

计算机笔记13(续20个)

210.办公自动化服务是一种应用软件实现的功能&#xff0c;不是网络操作系统提供的服务 211.中文windows中包含的汉字库文件库文件是用来解决输出时转换为显示或打印字模 212.汉字系统中的汉字字库里存放的是汉字的字形码 213.目前最为严重的病毒是木马病毒 214.网络安全服务…

景源畅信电商:做抖音运营怎么开始第一步?

在数字化时代的浪潮中&#xff0c;抖音作为一款短视频平台迅速崛起&#xff0c;成为许多人表达自我、分享生活的重要舞台。随着用户量的激增&#xff0c;如何做好抖音运营&#xff0c;尤其是迈出成功的第一步&#xff0c;成为了众多内容创作者和品牌主们关注的焦点。接下来&…

Web应用开发学习笔记————Vue框架

Vue框架快速入门 Vue入门 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vue入门</title><!--引入vue.js文件--><script src"../js/vue.js"><…

就说说Java初学者求职准备项目的正确方式

当下不少Java初学者也知道求职时项目的重要程度&#xff0c;但在简历上写项目和准备面试项目时&#xff0c;真有可能走弯路&#xff0c;这样的话&#xff0c;加重学习负担还是小事&#xff0c;还真有可能导致无法入职。 1 对于在校生和应届生来说&#xff0c;你去跑通个学习项…

2024年4月—马克思主义基本原理概论真题及答案解析(上海自考)

目录 1.选择题 2.简答题 3.论述题 1.选择题 2.简答题

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(九)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; 继续接上一篇文章内容&#xff0c;讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 现在&#xff0c;我们…

STM32——定时器

一、简介 *定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 *16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 *不仅具备基本的定时中断功能&#xff0c;而且还包含内外时钟源选择、输入…