1.Cherry Pick与Create Patch的区别

2023-10-26

结论

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只是一个提交的变更记录,解决冲突时会当作本地修改进行合并。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1.Cherry Pick与Create Patch的区别 的相关文章

  • gitk:悬停时显示分支名称

    你能告诉我如何让 gitk 工具在悬停时显示分支名称或建议能够这样做的工具吗 gitk 显示分支缠结 其中分支是无名的 我必须猜测哪个是 master 哪个是 stable 等 在 gitk 窗口的左下半部分 有一个信息行指定Branche
  • 如何使用 git format-patch 将提交压缩到一个补丁中?

    我在一个分支上有 8 个提交 我想通过电子邮件发送给一些尚未了解 git 的人 到目前为止 我所做的一切要么给我 8 个补丁文件 要么开始为分支历史记录中的每个提交提供补丁文件 从一开始 我使用 git rebase interactive
  • Git rebase 分支与所有父分支(或依赖子分支)

    是否可以使用 Git 来对分支及其所有父分支进行变基 我认为 父分支 是在这里使用的正确形式 根据您的观点 您也可以将它们称为依赖子分支 但是 遵循提交的父指针将让您到达这些分支 所以恕我直言称它们为 父分支 是公平的 我经常使用分支作为快
  • eGit/ZendStudio 9 生成的 Refspec HEAD:refs/for/refs/heads/master 是什么意思?

    在 ZendStudio 9 中从 Git 设置一个项目 基于 eclipse 和 eGit 它生成一个安静的正常获取引用规范 Remote Fetch Specification refs heads refs remotes origi
  • git:更改旧的提交消息而不产生冲突

    我想使用以下命令更改一个相当旧的提交消息 git rebase i sha1 of commit 这很好 我愿意git commit amend并编辑消息 但是当我这样做时事情会变得很糟糕 git rebase continue 我遇到了多
  • Git http - 安全地记住凭据

    通过 HTTP S 连接到远程存储库时 有没有办法安全地让 git 记住我的凭据 我已经尝试过core askpass方法详述于git config http git scm com docs git config让外部脚本提供我的凭据 尽
  • 将一些提交移至另一个分支

    我只有一个分支有 git repo A B C D E master 我想将提交 B C 和 D 拆分到另一个名为开发的分支 A E master B C D develop 做到这一点最简单的方法是什么 无需关心远程仓库 做cherry
  • 来自外部 .diff 文件的交互式补丁

    Linux 是否有命令或程序允许交互式地修补源代码 在屏幕上打印每个块并在将其应用到文件之前等待确认 就像是git add p 但是从另一个 diff 文件中进行更改 您始终可以在 shell ruby python 中编写脚本 逐行读取该
  • 如何提供准备好的 git 提交消息?

    按照惯例 我在 git 中创建故事分支 以在其中包含 Jira 问题 ID 例如FOO 1001 我有一个脚本可以帮我做到这一点 现在 我准备了另一个脚本 用于从 Jira API 获取 FOO 1001 的标题 我想在输入时实现这一目标
  • 使用 gnu make 正确构建 git 子模块

    我目前尝试编写一个 Makefile 来正确构建一个包含 git 子模块的项目 该子模块有自己的一组 makefile 并一次生成多个目标 包括一些库 该 Makefile 应具有以下属性 即使使用并行构建 也不要重建两次子模块 当子模块代
  • 创建 git 分支并将其合并到史诗分支

    我正在开发一个项目 例如 SO bubbleSort 我需要创建一个名为 feature version 1 的史诗分支 因此从这个史诗分支中很少有开发人员进行开发 因此为此 他们需要创建一个将分支与史诗分支分开 我的问题是我们如何合并这些
  • 使用 .gitattributes 强制 LF 行结尾而不丢失自动文本/二进制推理?

    我想用eol LF在我的 gitattributes 文件中 但我希望它适用onlyGit 自动将文件确定为文本文件 我能找到的最好的方法是将特定的文件扩展名 全局定义为文本或二进制 这并不理想 因为列表可能很大 我试过了 text aut
  • 为什么 PS1 不更新 git 分支名称?

    PS1 w git branch grep cut b 3 100 我按上面设置我的 PS1 但在我更改分支后 它不会更新提示中的分支名称git checkout 或使用以下命令更改存储库cd 如何解决这个问题 当反引号引用位被评估时PS1
  • 如何查看合并到合并提交中的提交?

    If my feature branch被合并到my main branch 我怎样才能看到合并了哪些提交my feature branch git log abc123 abc123显示合并到合并提交中的提交abc123 创建一个git
  • 为什么我的 .git 文件很大?

    我不小心在 git 目录中添加并提交了一些非常大 100MB 的 PSD 文件 当这些文件位于目录中时 我对它们进行了一系列编辑 但后来意识到它们不应该在那里 并将它们从目录中删除 然后我跑了 git add all git commit
  • 为什么我无法使用 git push origin :branchname 删除远程 git 分支?

    当我尝试推送到远程 git 分支以删除它时git push origin branchname我收到以下错误消息 错误 无法推送到不合格的目的地 remotes origin branchname 目标引用规范既不匹配远程上的现有引用 也不
  • .git/info/exclude 中的文件不起作用

    我已经放入了两个文件 git info exclude但我仍然可以看到他们git st 它们是配置文件 我不想提交更多 我把它们放在那里是因为 assume unchanged and skip worktree我无法结帐到另一家分行 如果
  • 是否可以从一个存储库中拉取并推送到另一个存储库?

    我在 github 上有一个公开的存储库 在那里我有一个正在开发的开源应用程序 用于制作产品目录和小型 cms 内容 我还有一个私有存储库 未托管在 github 中 它是在 github 中托管的开源应用程序下开发的应用程序 由于我目前正
  • git rebase 冲突是由哪个提交引起的

    当我执行 git rebase master 时 有时会发生冲突 有时 即使有错误消息 也很难追踪问题 如果我能找出 git 正在尝试重新申请并导致冲突的提交 这将是一个真正的帮助 如何找出哪个提交导致了冲突 查看冲突的文件 以开头的行 g
  • 如何修复“致命:无法创建工作树目录'WSL-Distribution-Switcher':没有这样的文件或目录”

    我目前正在尝试在我的笔记本电脑上安装 kali linux 但我陷入了这个错误 请帮我解决这个问题 谢谢 i typed cd Desktop cd Test Blank folder in Desktop git clone https

随机推荐

  • 得到课程:冯雪·科学减肥16讲

    发刊词 减肥的动机 是为了健康 更是为了提高你的魅力 提高你的社会竞争力 减肥的实质 是改变生活方式 换一种新的人生 只有跟一群志同道合的人一起走 才能走得更远 最终减肥成功 基本原理 01 终点 三个目标一个都不能少 只要体重 体脂和体型
  • 小样本学习(FSL):Few-shot Learning 综述【模型微调(Fine-tunning)、数据增强、迁移学习(Transfer Learning)】

    分类非常常见 但如果每个类只有几个标注样本 怎么办呢 比如 我们打造了一个智能对话开发平台以赋能第三方开发者来开发各自业务场景中的任务型对话 其中一个重要功能就是对意图进行分类 大量平台用户在创建一个新对话任务时 并没有大量标注数据 每个意
  • 启发式搜索算法:A算法(全局、局部择优算法)+A*算法 解决八数码问题

    文章目录 1 A 算法 1 1 全局择优算法 1 1 1 求解八数码 1 2 局部择优算法 1 2 1 求解八数码 2 A 算法 2 1 解决八数码难题 参考博客 人工智能搜索策略 A 算法 1 A 算法 在图搜索算法中 如果能在搜索的每一
  • 华为OD机试 - IPv4地址转换成整数(Java)

    题目描述 存在一种虚拟IPv4地址 由4小节组成 每节的范围为0 255 以 号间隔 虚拟IPv4地址可以转换为一个32位的整数 例如 128 0 255 255 转换为32位整数的结果为2147549183 0x8000FFFF 1 0
  • 相关概念地址笔记

    公平锁与非公平锁 https www jianshu com p f584799f1c77 java socket编程https www cnblogs com mingforyou p 3258418 html java四种引用类型htt
  • markdown文档:一个简单标记语言的使用及GitHub实际应用

    目录 1 什么是Markdown 2 Markdown与HTML的简单对比 3 Markdown的基本语法 4 GitHub中Markdown的使用 4 1 GitHub上自定义的md文件格式与markdown pad IDE 的区别 4
  • CS143:编译原理实验PA1

    PA1报告 Stack Machine 实验内容 基于cool语言实现一个可执行若干指令的stack machine 要求实现的栈机可以满足以下命令 Command Meaning int 将该整数压入栈 s 将字符s压入栈 e 根据栈顶元
  • Servlet原理

    Mapping问题 package com kuang servlet import javax servlet ServletException import javax servlet http HttpServletRequest i
  • 对MTK的pdaf对焦方式的分析

    上周五分析了下mt6752的pdaf对焦规律 以前一直认为pdaf对焦不可能准到一步到位 应该是走到清晰点附近后再用CAF 反差式 对焦到最清晰点 但通过log查看 感觉应该是分几种情况 如果pdaf的可信度高 比如色彩分明 环境亮度高 则
  • Angular基础(八) Observable & RxJS

    对于一个应用来说 获取数据的方法可以有很多 比如 Ajax Websockets LocalStorage Indexdb Service Workers 但是如何整合多种数据源 如何避免BUG 如何提高可维护性 如何提升应用的速度 这些却
  • vue3中使用jweixin-module报错

    在vue3中使用 var jweixin require jweixin module 会编译报错 require is not defined 没有require模块 改成import的话 由于jweixin module不支持expor
  • REDIS 4 集群搭建

    REDIS 4 集群搭建 1 下载 redis wget http download redis io releases redis 4 0 10 tar gz tar xzf redis 4 0 10 tar gz cd redis 4
  • [学习笔记]Centos7虚拟机网络重启失败

    好久没用虚拟机了 这次学习的时候打开之前安装好的Centos7发现又连不了网了 在网上跟着教程配置好IP之后重启网络服务 执行service network restart命令 出现了错误 Restarting network via sy
  • Install ModelSim on Linux

    To use ModelSim on Linux is quite difficult There is only exe file for installing ModelSim on Windows on the official we
  • php的phpstoem代码编辑器的快捷键,比较常用的归纳

    1 CTRL SHIFT N 全局搜索文件 优先文件名匹配的文件 2 CTRL R 当前窗口替换文本 3 CTRL E 最近打开的文件 4 F5 复制文件 文件夹 5 CTRL C 复制 CTRL V 粘贴 CTRL X 剪切 删除行 Ct
  • Linux 面试题-(腾讯,百度,美团,滴滴)

    Linux 面试题 腾讯 百度 美团 滴滴 分析日志t log 访问量 将各个ip 地址截取 并统计出现次数 并按从大到小排序 腾讯 http 192 168 200 10 index1 html http 192 168 200 10 i
  • 用两成数据也能训练出十成功力的模型,Jina Embeddings 这么做

    句向量 Sentence Embeddings 模型在多模态人工智能领域起着至关重要的作用 它通过将句子编码为固定长度的向量表示 将语义信息转化为机器可以处理的形式 在 文本分类 信息检索和相似度计算 等多个方面有着广泛应用 然而长期以来
  • unity 动画 - Animator 的使用

    创建 animator 文件 命名为 nanzhanshi2 controller 双击打开文件 默认三个 State AnyState Entry Exit Parameters 有四种类型的参数 Float Int Bool Trigg
  • cocos控制相机旋转

    import decorator Component Event EventMouse find Input input Node v3 Vec3 from cc const ccclass property decorator cccla
  • 1.Cherry Pick与Create Patch的区别

    Cherry Pick与Create Patch的区别 结论 实验 场景1 应用时无冲突 场景2 应用时产生冲突 使用cherry pick 使用patch 场景3 产生冲突 并且有其他文件的变更 原理 结论 1 应用无冲突时cherry