Cherry Pick与Create Patch的区别

  • 结论
  • 实验
    • 场景1:应用时无冲突
    • 场景2: 应用时产生冲突
      • 使用cherry pick
      • 使用patch
    • 场景3:产生冲突,并且有其他文件的变更
  • 原理

结论

1.应用无冲突时cherry pick与patch一样,只应用变更的内容;
2.区别在于cherry pick解决冲突时相会对冲突文件进行分支合并(每个commit的引用都可当作分支),而patch只应用变更的内容。
2.1.cherry pick解决冲突时只引用提交中的文件内容,不是全部分支合并。
我们来进行三组实验,分别验证这3个结论。

实验

场景1:应用时无冲突

从master上切出两个分支master-01,master-02。
目标:master-01分支应用master-02的一个提交
步骤:
在master-02分支上提交两次。
在master-01分支上引用master-02的第二次提交,发现引用的是第二次提交的内容,第一次提交的内容没有被引用。验证了论点1
【master-02分支的两次提交】:

【master-01 cherry pick之后:】

场景2: 应用时产生冲突

目标:master-03分支应用master-02的一个提交
步骤:
master-03 提交一个更改,如图1
master-02 提交一个更改(这个更改不想被master-03引用),在与master-03提交的同一处再次提交了一个更改(制造冲突),如图2

图1:

图2:


使用cherry pick

在master-03分支上使用 mater-02的最后一次更改
结果:解决冲突时会合并文件。把整个文件的更改都引用过来了。

使用patch

场景3:产生冲突,并且有其他文件的变更

从master上切出两个分支master-01,master-02。
目标:master-01分支应用master-02的一个提交
步骤:
在master-01分支上进行一次提交;
在master-02分支上提交两次;
在master-02分支上制造一个与master-01分支产生冲突的提交;
在master-01分支上引用master-02的第三次提交,发现冲突时只引用当前提交包含的文件,符合预期,验证了论点3
【master-01进行一次提交】:

【master-02分支的三次提交】:

【master-01 cherry pick之后:】

原理

cherry pick引用的是一个commit,解决冲突时会将包含的文件当作分支进行合并。
patch只是一个提交的变更记录,解决冲突时会当作本地修改进行合并。

1.Cherry Pick与Create Patch的区别相关推荐

  1. OpenFOAM中:点,线,面,体的概念区别(尤其是face和patch的区别)

    OpenFOAM中:点,线,面,体的概念区别(尤其是face和patch的区别) 个人理解如下: face:有序点(point)的集合,物理面的概念 patch:边界面(face)的集合(非内部面), ...

  2. MySQL+create+base,MySQL中CREATE DATABASE和CREATE SCHEMA的区别

    MySQL中CREATE DATABASE和CREATE SCHEMA的区别 create schema 是创建模式 create database 是创建数据库 但进入MySQL不用选择任何数据库即 ...

  3. git cherry pick

    直接将选定的其他分支的commit,提交到该分支上 不建议使用 git rebase --onto 使用cherry pick代替 http://weblog.avp-ptr.de/20120928/ ...

  4. pgsql之create user与create role的区别

    create user的语法 CREATE USER name [ [ WITH ] option [ ... ] ]where option can be:SUPERUSER | NOSUPERUS ...

  5. 在gerrit上cherry pick多笔提交到一个仓库中

    我们的要求是在dvr_service仓库上从其他分支cherry pick 两笔提交到release/b03chn_rel_sop_3_nobo分支 这两笔提交分别如图所示 如图所示,B02-5746 ...

  6. idea cherry pick 功能 git log 窗口 冲突conflict

    git log 窗口 参考 source tree cherry pick, merge conflict merge conflict 冲突 <<<<<<< ...

  7. IDEA git cherry pick 简单使用

    cherry pick的作用: 参考了一些博客, eg: 参考博客1 参考博客2 再做了个小案例后,我目前的理解是,cherry pick的作用是将一个分支的部分提交/历史提交,可以合并到另外一个分支 ...

  8. SVN—patch的应用(create patch,apply patch)(转)

    1.create patch  使用create patch可以生成一个或者多个修改过的文件和当前版本差异的patch(支持目录树)  通常情况下,create patch将修改保存为.patch或. ...

  9. [gitsourcetree]cherry pick和遴选的使用

    前言 cherry pick. 拷贝其中的某一次提交记录. 本文就介绍一种更加快捷的方式 cherry pick. 介绍 此方法主要用于2分支分别独立维护的情况, 即某一分支已经上线了spring-2 ...

最新文章

  1. 使用eBPFbcc提取内核网络流量信息(二)
  2. 书Visual C++.NET应用教程(附光盘)——高等学校计算机语言应用教的评论
  3. android下音频采集功能,音频采集:Android基于AudioRecord的实现
  4. Jmeter-【JSON Extractor】-响应结果中三级key取值
  5. 前端学习(2516):传值和引用
  6. byte转换为string乱码_每日一课 | 如何将int转换为String
  7. 【线性代数本质】1:向量究竟是什么
  8. MyEclipse下XFire开发Webservice实例
  9. 程序员8月薪资新鲜出炉,圈外人却在酸?
  10. linux a8启动过程,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  11. opencv笔记(7):直方图均衡化
  12. Webdriver常用的元素定位
  13. freetype 2.11.0必须使用VS2012编译
  14. breadweb控制台下载_路由器刷breed web控制台助手
  15. DotNetSkin 完美破解
  16. python代码变成so
  17. H5通过数据流方式播放视频
  18. kettle MongoDB数据迁移至Hbase
  19. 从《我不是潘金莲》谈程序员的核心竞争力
  20. 未来十年,交易场景,将由刷脸支付全面构建!

热门文章

  1. 学生信息管理系统测试计划大纲
  2. win7查看隐藏文件_win7 c盘清理的方法教程
  3. 【C语言】自定义类型(结构体、位段、枚举、联合体)与内存对齐
  4. 摩托罗拉 V360i的使用心得
  5. 论文阅读:Task Discrepancy Maximization for Fine-grained Few-Shot Classification
  6. STM32F103VET6利用片内FLASH虚拟U盘,使用文件复制方式实现IAP
  7. 关于Cookie和Session的一些疑惑和猜测
  8. 微信h5游戏模板案例作品欣赏
  9. H5案例精选:互动竞速类微信h5游戏欣赏
  10. 阿里云ECS服务器部署Node.js项目详细教程及多网站部署