当前位置: 首页 > news >正文

精通git,没用过git cherry-pick?

前言

git cherry-pick是git中非常有用的一个命令,cherry是樱桃的意思,cherry-pick就是挑樱桃,从一堆樱桃中挑选自己喜欢的樱桃,在git中就是多次commit中挑选一个或者几个commit出来,也可以理解为把特定的commit复制到一个新分支上。

应用场景

commit 都提交了,为什么还要复制新的出来?

应用场景1:有时候版本的一些优化需求开发到一半,可能其中某一个开发完的需求要临时上,或者某些原因导致待开发的需求卡住了已开发完成的需求上线。这时候就需要把 commit 抽出来,单独处理。

应用场景2:有时候开发分支中的代码记录被污染了,导致开发分支合到线上分支有问题,这时就需要拉一条干净的开发分支,再从旧的开发分支中,把 commit 复制到新分支。

命令使用

复制单个

现在有一条feature_cherrypick分支,commit 记录如下:

commit 09cc27103ea4b5ec6f9827e41583e3f0fdbb5efb (HEAD -> feature_cherrypick, origin/feature_cherrypick)
Author: aiqinhai <aiqinhai@qq.com>                                                                                                             
Date:   Fri Sep 22 21:20:39 2023 +0800                                                                 [修改代码]cherryPick第六次   

需要把 09cc27103ea4b5ec6f9827e41583e3f0fdbb5efb 这次commit复制到另一个分支,首先把 commitHash 复制下来,然后切到 master 分支。master分支当前在cherryPick3()这个版本,使用cherry-pick把 09cc27103ea4b5ec6f9827e41583e3f0fdbb5efb commit应用到当前分支。由于feature_cherrypick分支和master分支差三个分支,在进行git cherry-pick之后出现冲突,这时候进行冲突解决即可。

复制多个

以上是单个 commit 的复制,下面再来看看 cherry-pick 多个 commit 要如何操作。一次转移多个提交:

git cherry-pick commit1 commit2

上面的命令将 commit1 和 commit2 两个提交应用到当前分支。多个连续的commit,也可区间复制:

git cherry-pick commit1^..commit2

上面的命令将 commit1 到 commit2 这个区间的 commit 都应用到当前分支(包含commit1、commit2),commit1 是最早的提交。比如说feature_cherrypick分支,有如下三个commit.

commit 668a7ca5daabd8dedbdfdc15e9abad912adc6414
Author: aiqinhai <aiqinhai@qq.com>
Date:   Fri Sep 22 20:52:36 2023 +0800[修改代码]cherryPick第三次commit 5b303cc62fcd3d3121619d1163f2ec3392d65b7c
Author: aiqinhai <aiqinhai@qq.com>
Date:   Fri Sep 22 20:35:31 2023 +0800[修改代码]cherryPick第二次commit 8ffb06b413047d818f920758288491c70c4fa9e4
Author: aiqinhai <aiqinhai@qq.com>
Date:   Fri Sep 22 20:33:55 2023 +0800[修改代码]cherryPick第一次

 我们可以一次性将cherryPick第一次至cherryPick第三次三次commit复制新分支feature_app6.6上,先切换到feature_app6.6分支上,再执行git cherry-pick 8ffb06b413047d818f920758288491c70c4fa9e4^..668a7ca5daabd8dedbdfdc15e9abad912adc6414命令,执行结果如下。

应用成功之后,git push到远程分支即可

cherry-pick 代码冲突

在cherry-pick多个commit时,可能会遇到代码冲突,这时cherry-pick会停下来,让用户决定如何继续操作。我们可以解决冲突,然后使用cherry-pick --continue让cherry-pick继续进行下去。把冲突之后的commit也复制进来,整个流程就完成了。但有时候可能需要在代码冲突后,放弃或者退出流程:

放弃 cherry-pick:
git cherry-pick --abort

回到操作前的样子,就像什么都没发生过。

退出 cherry-pick:
git cherry-pick --quit

不回到操作前的样子。即保留已经cherry-pick成功的 commit,并退出cherry-pick流程。

相关文章:

精通git,没用过git cherry-pick?

前言 git cherry-pick是git中非常有用的一个命令&#xff0c;cherry是樱桃的意思&#xff0c;cherry-pick就是挑樱桃&#xff0c;从一堆樱桃中挑选自己喜欢的樱桃&#xff0c;在git中就是多次commit中挑选一个或者几个commit出来&#xff0c;也可以理解为把特定的commit复制到…...

QT5|C++|通过创建子线程方式实现进度条更新

背景&#xff1a; 一开始是通过在主线程中写一个for循环&#xff0c;每次加1后睡眠1s进行进度条更新。但这样写的结果是 --> 无法动态显示进度条进度。后通过上一篇文章 [ QT5|C|通过信号槽机制实现进度条更新 ] 中的写信号槽机制实现。实现后 考虑了下有没有其他方式实现&a…...

基于mediasoup的webrtc server,性能压测时发现带宽利用率偏低(40%)

基于mediasoup的webrtc server&#xff0c;进行性能压测时发现&#xff0c;在1gbps的网络条件下&#xff0c;带宽利用率在40%(400Mbps)时&#xff0c;就会出现过高丢包率的(packet loss > 10%)的情况。这个结果是合理的吗&#xff1f;如果不合理&#xff0c;要如何提升性能&…...

Ubuntu Redis开机自启动服务

1. 建立service文件 sudo vim /etc/systemd/system/redis-server.service2. redis service文件 [Unit] DescriptionAdvanced key-value store Afternetwork.target Documentationhttp://redis.io/documentation, man:redis-server(1)[Service] Typenotify ExecStart/usr/bin/…...

Stm32_标准库_呼吸灯_按键控制

Stm32按键和输出差不多 PA1为LED供给正电&#xff0c;PB5放置按键&#xff0c;按键一端接PB5,另一端接负极 void Key_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //APB2总线连接着GPIOBGPIO_InitStructur.GPIO_Mode GPIO_Mode_IPU;GPIO_InitStructur.…...

MySQL作业:索引、视图、存储、函数

学生表&#xff1a;Student (Sno, Sname, Sex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score) …...

漫谈:C语言 C++ 所有编程语言 =和==的麻烦

这次不只是C语言很麻拐&#xff0c;是所有编程语言都很麻拐了。 赋值和比较是编程语言最基本的操作之二&#xff0c;C和所有类C语言都使用“”和“”来分别表示赋值和比较。 数学上等号“”是个单一的概念&#xff0c;含义是“相等”&#xff0c;左右两边是等价的&#xff0c;很…...

十五、异常(1)

本章概要 异常概念基本异常 异常参数 异常捕获 try 语句块异常处理程序终止与恢复 Java 的基本理念是“结构不佳的代码不能运行”。 改进的错误恢复机制是提高代码健壮性的最强有力的方式。错误恢复在我们所编写的每一个程序中都是基本的要素&#xff0c;但是在 Java 中它显得…...

Redis 哨兵模式搭建教程

一、介绍 本文实战搭建一主两从三哨兵&#xff0c;通过使用哨兵模式&#xff0c;可以有效避免某台服务器的 Redis 挂掉出现的不可用问题&#xff0c;保障系统的高可用。 本文通过虚拟机搭建的三台 Centos7 服务器进行测试&#xff0c;使用的 Redis 版本为 6.25。 二、准备环…...

【C++】gnustl_static 与 c++_shared 的区别

参考&#xff1a;GNU与cSTL的区别与联系-爱代码爱编程​ gnustl_static 与 c_shared 的区别&#xff1a; 不同版本的 STL TSL是一个与STL兼容的多线程支持库。 STLport是一个可移植、高度兼容的STL实现。 SGI STL是最早的STL实现之一&#xff0c;对STL的发展起到了重要的作用…...

怎样选择第三方检测机构获取功能测试报告?

数字化时代&#xff0c;软件给人们的生活带来了越来越多的便利&#xff0c;产品功能测试也成为了软件开发方在研发时的重要环节&#xff0c;这关系到用户使用产品的体验感。所以做好软件功能测试对把控产品质量有着很大影响&#xff0c;通过有效的功能测试能够发现系统潜在的问…...

【@PostConstruct、 @Autowired与构造函数的执行顺序】

PostConstruct、 Autowired与构造函数的执行顺序 一、PostConstruct介绍二、Spring框架中在bean初始化和销毁时候执行实现方式三、项目验证1.MyServiceImpl2.测试结果3. 项目源码 最近对同事代码进行codeReview时候发现用PostConstruct注解&#xff0c;特地对此注解执行顺序进行…...

用vite搭建vue3+ts项目

一、环境搭建 1&#xff1a;首先vite环境安装 npm init vite 或者 yarn init vite 2&#xff1a;输入项目的名字,在这里用vue3_test ? Project name: › vite-project 3&#xff1a;选择项目类型&#xff0c;这里选择Vuets 4&#xff1a;出现下图&#xff0c;初始化基本…...

前端求职指南

简历求职指南 为什么没有面试&#xff1f; 1、简历写的不好 2、简历投递不好 简历的定义是什么&#xff1f; 是求职者向未来雇主展示自己专业技能和职业素养的自我推销工具&#xff0c;以找到工作为目的。 什么时候改简历&#xff1f; 每半年或一年更新一次工作中的成长 再工…...

datax同步数据翻倍,.hive-staging 导致的问题分析

一、背景 有同事反馈 Datax 从 Hive 表同步数据到 Mysql 数据翻倍了。通过查看 Datax 任务日志发现&#xff0c;翻倍的原因是多读取了 .hive-staging_xx 开头的文件。接下里就是有关 .hive-staging 的分析。 二、环境 Hive 版本 2.1.1 三、分析 3.1 .hive-staging_hive 产…...

DataGrip 恢复数据

DataGrip 恢复数据 准备数据库 create database chap02; use chap02;恢复数据 运行sql脚本方式恢复数据到刚刚创建的数据库 数据右键—> SQL Scripts —> Run SQL Script… 选择sql脚本...

【深度学习实验】前馈神经网络(一):使用PyTorch构建神经网络的基本步骤

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 定义x,w,b 2. 计算净活性值z 3. 实例化线性层并进行前向传播 4. 打印结果 5. 代码整合 一、实验介绍 本实验使用了PyTorch库来构建和操作神经网络模型&#xff0c;主要是关…...

【Unity】LODGroup 计算公式

Unity 在配置 LodGroup 时&#xff0c;其分级切换的计算方法是按照物体在相机视野中占据的比例计算的。在运行时&#xff0c;如果相机视野范围&#xff08;Field of View&#xff09;没有改变&#xff0c;那么这个值可以直接换算成物体距离相机的距离。这里就讨论下如何计算得到…...

【数学建模】2023华为杯研究生数学建模F题思路详解

强对流降水临近预报 我国地域辽阔&#xff0c;自然条件复杂&#xff0c;因此灾害性天气种类繁多&#xff0c;地区差异大。其中&#xff0c;雷雨大风、冰雹、龙卷、短时强降水等强对流天气是造成经济损失、危害生命安全最严重的一类灾害性天气[1]。以2022年为例&#xff0c;我国…...

docker 安装 nessus新版、awvs15-简单更快捷

一、docker 安装 nessus 参考项目地址&#xff1a; https://github.com/elliot-bia/nessus 介绍&#xff1a;几行代码即可一键安装更新 nessus -推荐 安装好 docker后执行以下命令 #拉取镜像创建容器 docker run -itd --nameramisec_nessus -p 8834:8834 ramisec/nessus …...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...