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

简单了解一下 git cherry-pick

1. 基本介绍

git cherry-pick 用于从其他分支中选择一个或多个特定的提交(commit)并将它们应用到当前分支上。

2. 使用场景

在我们进行多分支开发时,将代码从一个分支转移到其他分支是非常常见的。

若需要将一个分支中的所有代码合并,使用 git merge。

若需要将一个分支中的部分提交 commit 变动,使用 git cherry-pick。此时引入特定更改或功能到当前分支时非常有用。

3. 基本用法

1、选择单个提交

git cherry-pick <commit-hash>

2、选择一系列提交

闭区间 [ 1,3 ]

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

开区间 ( 1,3 ] 

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

3、选择多个非连续提交

git cherry-pick <commit-hash1> <commit-hash3> <commit-hash5>

注意⚠️:选择多个提交时,必须按照正确的顺序进行,提交 1 必须早于提交 2,否则命令将失败,但不会报错。 

4. 举个例子🌰

假如我们在 'feature' 分支上有以下提交历史:

(feature):A - B - C - D - E

现在在 'main' 分支上:

(main):F - G

此时我们需要将 ' feature' 分支上的 C 和 D 提交应用到 'main' 分支上,使用:

git checkout main
git cherry-pick C D

这样,'main' 分支的提交历史变成:

(main):F - G - C' - D'

其中 C' 和 D' 是应用于 'main' 分支的 C 和 D 提交,提交内容是一样的,但是分支 hash 值是不同的。

git cherry-pick 命令的参数不一定是提交的 hash 值,分支名也 ok,表示转移该分支的最新提交。

git cherry-pick feature
# 等价于
git cherry-pick E

5. 代码冲突

如果在 cherry-pick 过程中出现冲突时,Git 会暂停操作,让我们手动解决冲突。

1、解决冲突之后,需要继续 cherry-pick 过程:

git add <resolved-files>
git cherry-pick --continue

2、放弃 cherry-pick 操作,回到操作前

git cherry-pick --abort

3、放弃 cherry-pick 操作,但是不回到操作前(不推荐)

git cherry-pick --quit

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2024专业音乐创作必备Guitar Pro8永久破解版激活码
  • 关于android中的各种尺寸与计算
  • javascript逻辑运算符
  • Ecovadis辅导是什么?哪些企业需要做Ecovadis辅导?
  • IO进程----标准IO
  • Redis-哨兵监控(sentinel)
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • 非对称加密算法-ECDHE
  • git cherry-pick
  • 第二十天的学习(2024.8.8)Vue拓展
  • serial靶场
  • QT学习从零开始,开发一个串口调试助手
  • 数学建模学习笔记
  • f({1, 3})与f(C c)和`f(const C c)
  • 海康gige工业相机无驱动取像突破(c#实现,版本更新,你也可以移植到linux下去用)
  • ----------
  • (三)从jvm层面了解线程的启动和停止
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • Angular2开发踩坑系列-生产环境编译
  • GraphQL学习过程应该是这样的
  • Java反射-动态类加载和重新加载
  • jdbc就是这么简单
  • laravel 用artisan创建自己的模板
  • PHP的类修饰符与访问修饰符
  • python3 使用 asyncio 代替线程
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从0实现一个tiny react(三)生命周期
  • 从tcpdump抓包看TCP/IP协议
  • 第十八天-企业应用架构模式-基本模式
  • 解决iview多表头动态更改列元素发生的错误
  • 删除表内多余的重复数据
  • 实习面试笔记
  • 小程序 setData 学问多
  • Java性能优化之JVM GC(垃圾回收机制)
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # dbt source dbt source freshness命令详解
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 飞书APP集成平台-数字化落地
  • #etcd#安装时出错
  • #pragma once与条件编译
  • #图像处理
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (9)STL算法之逆转旋转
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (十) 初识 Docker file
  • (一)UDP基本编程步骤
  • ****Linux下Mysql的安装和配置
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET : 在VS2008中计算代码度量值
  • .NET C# 使用 iText 生成PDF
  • .NET Framework杂记
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net6 webapi log4net完整配置使用流程
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比