5

文档说:“因为 git-cherry 比较的是变更集而不是提交 id (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 .. 呢?

4

1 回答 1

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 在两次运行之间不同,这就是发生的事情。

警告讲师——我没有尝试过我的理论,但这就是我解释手册页的方式。

于 2009-06-24T16:22:28.933 回答