git cherry confusion - 不能像doc中所描述的那样工作

时间:2009-06-24 10:18:24

标签: git dvcs

文档说:“因为git-cherry比较变更集而不是提交标识(sha1),所以你可以使用git-cherry来查明你在本地提交的提交是否已在不同的提交ID下应用。”

让我们看看:

$ git cherry master release-1.1.0 | head -1
- 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
$ git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
...
(cherry picked from commit 409c61b3304373a73c787fdf9c08cc338934b74d)
...

git show显示了409c ..和533e

的相同变更集
$ git br --contains 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
release-1.1.0
$ git br --contains 409c61b3304373a73c787fdf9c08cc338934b74d
master
release-1.0.4

这意味着变更集同时包含master和release-1.1.0。那么为什么git cherry显示533e ..?

1 个答案:

答案 0 :(得分:3)

它还说“将提交与从git-patch-id程序获得的补丁ID进行比较。”当你使用樱桃采摘的差异时,它是否会成为一个稍微不同的差异?

在这种情况下,不仅提交ID不同,而且修补程序ID作为git-patch-id将报告提交的不同补丁ID,因此它们不会被认为是在彼此的分支中。

很容易检查:

git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 | git-patch-id
git show 409c61b3304373a73c787fdf9c08cc338934b74d | git-patch-id

如果git-patch-id返回的第一个sha1在两次运行之间不同,那就是发生的事情。

警告 - 我还没有尝试过我的理论,但这就是我对手册的解释。