首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git cherry-pick是如何计算补丁的?

git cherry-pick是如何计算补丁的?
EN

Stack Overflow用户
提问于 2020-09-03 23:44:05
回答 1查看 35关注 0票数 0

我理解git cherry-pick是如何在高层次上工作的:它接受在一个提交中引入的更改,并将它们应用到另一个提交中。

然而,我正在试图更好地理解git实际上是如何在幕后做到这一点的。

假设您运行以下命令:

代码语言:javascript
复制
$ git checkout main
$ git cherry-pick source-commit

我的理解是,由于提交是一个快照,而不是一组更改,因此必须首先计算某种差异,然后将该补丁/差异应用到当前分支(main)。这个补丁仅仅是source-commit和它的父补丁的区别吗?是否涉及source-commitmain的合并基础?

EN

回答 1

Stack Overflow用户

发布于 2020-09-04 00:03:18

实际上,使用单次提交执行git cherry-pick HASH或多或少等同于:

  1. git show --patch HASH > temp.diff
  2. git apply temp.diff

反过来,上面的步骤1计算给定的提交和它的单个父级之间的差异。

(您可以选择合并,但必须使用选项-m parent-number指定要与之进行比较的父级。)

关于合并基,根本不涉及哈希和main的合并基AFAIK。请注意,在发生冲突的情况下,如果您已经配置了diff3冲突样式,那么中间的块(对于合并来说是合并基础)只是樱桃的父级。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63727181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档