【Git】Git cherry-pick

2023-09-13 15:50:09

Git cherry-pick

1.指令效果与基本用法

在 Git 的文档中,对于cherry-pick指令的描述如下:

git cherry-pick 命令用来获得在单个提交中引入的变更,然后尝试将作为一个新的提交引入到你当前分支上。 从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。

该命令的基本语法如下:

git cherry-pick <commit-hash>

其中,<commit-hash>是要应用的提交的哈希值,其可以有两种取值:

  1. 提交对象的哈希值:此时会将该提交对象中的变更,作为一个新的提交引入当前分支
  2. 分支名:此时会将该分支上的最新提交,作为一个新的提交引入当前分支

当然,也可以同时应用多个提交,只需要提供多个值:

git cherry-pick <commit-hash1> <commit-hash2> <commit-hash3> ...

这将按照指定的顺序将所有指定的提交应用于当前分支。

2.cherry-pick的使用场景

cherry-pick命令常用于以下场景:

  • 合并单个提交:当我们只想应用某个分支上的一个提交到当前分支时,可以使用cherry-pick命令,并给出对应的commit hash值,而不需要合并整个分支。
  • 修复bug:当我们在一个分支上修复了一个bug,并希望将这个修复应用到其他分支上时,可以使用cherry-pick命令,指定bug分支名即可(当然修复需要在一个提交中,因为指定分支名时,仅能将最新提交提取出来)。
  • 提取特定功能:当我们在一个分支上开发了一个新功能,并希望将该功能应用到其他分支上时,可以使用cherry-pick命令,同样指定分支名即可(当然新功能需要在一个提交中,因为指定分支名时,仅能将最新提交提取出来)。

3.cherry-pick的注意事项

在使用cherry-pick命令时,有一些注意事项需要了解:

  • cherry-pick会创建一个新的提交,因此可能会引入冲突。如果发生冲突,需要手动解决冲突后再继续应用提交。
  • cherry-pick不会自动合并提交的作者和提交日期,而是使用当前分支的作者和日期。如果需要保留原有的作者和日期信息,可以使用--no-commit选项,并手动修改提交信息后再提交。

4.解决冲突

cherry-pick提交时,通常会面临冲突,特别是如果cherry-pick的目标提交修改了与当前分支相同的文件。在这种情况下,需要在成功应用更改之前解决冲突。

cherry-pick期间发生冲突时,Git 会暂停进程并提示解决冲突。这时可以使用 git status 命令查看有冲突的文件,并在编辑器中解决冲突

解决冲突之后,保存更改,并使用git add命令将文件添加到暂存区。然后,您可以使用以下命令继续 cherry-pick 进程:

$ git cherry-pick --continue

这将应用更改并完成 cherry-pick 进程。

5.应用多个提交时跳过某个提交

可以使用git cherry-pick --skip命令跳过 cherry-pick 过程中的一个提交。此命令将跳过当前的提交并继续下一个提交。

6.撤销 cherry-pick 操作

在某些情况下,你可能需要撤销 git cherry-pick 操作。这时,你可以使用 git cherry-pick --abort 命令。该命令将中止 cherry-pick 操作并还原过程中所做的任何更改。

更多推荐

笔记:Android 应用启动流程

1.点击图标,启动app点击图标,实际是封装了一个Intent然后调用了startActivity方法ComponentNamecomponentName=newComponentName("包名","activity名称");Intentintent=newIntent(Intent.ACTION_MAIN);int

如何玩转CSDN AI工具集

前言人工智能生成内容(AIGC)是当下最具有前景的技术领域之一。AI能够以惊人的速度和准确度生成各种类型的内容,完成文章翻译、代码生成、AI对话、插图创作等工作,带来了许多令人兴奋的机遇。本文将介绍CSDNAI工具集的基本使用方法,现在您可以免费试用全部功能。一、AI工具集AI工具集是CSDN的一款综合AI赋能平台,集

Java 基于 SPringBoot 的幼儿园管理系统,附源码、数据库

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文章目录一、效果演示二、前言介绍三、主要技术四、系统设计(部分)4.1、主要功能模块设计4.2、系统登录设计五、运行截图5.1、用户功能模块5.1.1、

[GIT]版本控制工具

[GIT]版本控制工具Git的命令Git的配置信息查看现有Git配置信息设置Git配置信息用户信息配置文本编辑器配置差异分析工具配置编辑Git配置文件Git仓库操作初始化Git仓库克隆Git仓库Git分支仓库创建Git远程仓库命令Git提交历史Git标签添加标签查看已有标签删除标签查看标签版本的修改内容其它操作Git是

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -@Autowried

😀前言自己实现SpringMVC底层机制系列之-实现任务阶段5-完成Spring容器对象的自动装配-@Autowried🏠个人主页:尘觉主页🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉在csdn获奖荣誉:🏆csdn城市之星2名⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣

自己实现 SpringMVC 底层机制 系列之--实现任务阶段 3- 从 web.xml动态获取 wyxspringmvc.xml

😀前言自己实现SpringMVC底层机制系列之–实现任务阶段3-从web.xml动态获取wyxspringmvc.xml🏠个人主页:尘觉主页🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉在csdn获奖荣誉:🏆csdn城市之星2名⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣

macOS - 使用VLC

文章目录关于VLC安装查看帮助流媒体MRL语法:URL语法:主程序(core)音频视频截图:窗口属性:子画面屏幕显示(OSD):字幕:覆盖:轨道设置:播放控制:默认设备:高级:输入播放列表性能选项:热键跳跃大小:关于VLCVLCmediaplayerVLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文

SpringMVC概述,SpringMVC是什么,有什么优势?

目录一、MVC模式二、SpringMVC是什么?三、SpringMVC的优势四、SpringMVC的应用场景一、MVC模式MVC模式是一种软件架构模式,它将软件的用户界面(即前台页面)和业务逻辑分离,使代码具有更高的可扩展性、可复用性、可维护性和灵活性。MVC模式包含三个组件:Model(模型)、View(视图)和Co

Spring MVC请求处理流程和九大组件

文章目录SpringMVC请求处理流程SpringMVC九⼤组件需求:前端浏览器请求url:http://localhost:8080/demo/handle01,前端⻚⾯显示后台服务器的时间开发过程配置DispatcherServlet前端控制器开发处理具体业务逻辑的Handler(@Controller、@Requ

阿里云大数据实战记录10:Hive 兼容模式的坑

文章目录1、前言2、什么是Hive兼容模式?3、为什么要开启Hive模式?4、有什么副作用?5、如何开启Hive兼容模式?6、该场景下,能不能不开启Hive兼容模式?7、为什么不是`DATE_FORMAT(datetime,string)`?8、小结1、前言今天在开发一个表单的时候,MaxCompute抛给我一个错误:

pdf转换成word,这里有几个不错的方法

&nbsp;&nbsp;pdf转换成word怎么转?大家都知道,在电脑进行各种文件格式转换中,PDF转换为Word文档的需求量应该是最大的。在我们的日常工作中,经常需要将PDF转换为Word格式。为什么要将pdf文件转换成word,相信大家也都应该知道的,因为pdf文件不易编辑的特点,导致大家相对pdf文件内容进行修改

热文推荐