首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-cherry如何知道哪些提交已经被合并到上游分支中?

git-cherry如何知道哪些提交已经被合并到上游分支中?
EN

Stack Overflow用户
提问于 2021-04-08 15:36:12
回答 1查看 56关注 0票数 1

我很好奇什么是'git-cherry‘(相当于'git cherry')算法。假设我在主题分支上,它是从master分支出来的,它有一些新的提交A,B,C。假设B被选为master

代码语言:javascript
复制
master--D-E-B
 \
  \-topic-A-B-C

这会让我知道A,B,C中的哪一个被精心挑选成了大师。在这种情况下,B是。

代码语言:javascript
复制
git checkout topic
git cherry origin/master
+A
-B
+C

“git cherry”是怎么知道的?这里使用的算法和元数据是什么,以及它的存储位置?它可以计算“commit B diff”的哈希,并检查master中是否存在确切的commit diff哈希。但非平凡的合并又如何呢?提交差异将是不同的。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2021-04-08 15:56:13

git cherry是一个前端,它可以使更复杂、能力稍差的git rev-list --cherry-mark输出更有用(并且避免了对称差异参数的需要;见下文)。

git rev-list --cherry-mark的工作方式与您所建议的非常相似:

Git可能已经计算出“commit B diff”的哈希值,并检查主节点中是否存在确切的commit diff哈希值。

这被称为补丁id,有一个Git程序来生成它,这个程序自然被称为git patch-id。从Git1.9开始,有两种类型的补丁ID可用,如the documentation中所述。

但非平凡的合并又如何呢?

在这里,patch-ID往往不匹配,所以Git会考虑这些不同的提交。这可能就是我们想要的,因为合并本身是非常重要的(即,需要手动解决)。

请注意,在使用git rev-list --cherry-mark时,必须使用三点表示法(请参见the gitrevisions documentation)选择对称差选项。计算了patch-ID的提交是来自对称差异的左侧和右侧的提交。git cherry命令通过upstream、head和limit参数在内部生成适当的修订列表。

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

https://stackoverflow.com/questions/66999311

复制
相关文章

相似问题

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