Git log rev range master 在 master 和 branch 之间给出不同的结果

Git log rev range master gives different results between master and branch

我正在发布 b运行ch,我在其中应用来自 master(主要开发)的精心挑选的提交。

我想检查是否已经复制了一些旧的提交,所以我开始使用 git loggrep 来查找提交哈希之一。

当在 b运行ch 上时,我通常比较关于 master 的最新提交与:

git log --oneline -20

git log --oneline -20 master

但是现在我想检查 运行ge 的提交,经过一些试验和错误我最终使用:

git log --oneline <myhash>~..HEAD master

其中,当检出 master 时,会给出预期的结果 - 从 <myhash>(含)到最新的 master.

如果 运行 当我在不同的 b运行ch 上时,相同的命令会产生不同的结果(实际上它似乎给出了 b[ 开头的所有提交=37=]ch up to the latest): 为什么?

如果您想查看从特定的其他提交开始的分支上的所有提交,请使用以下命令:

git log --oneline start..branch

其中 start 是开始提交,branch 是最终提交。 Git 将显示所有可从 branch 访问的提交并排除可从 start 访问的提交(通过以下方式实现相同的行为:git log ^start branch,即 "not start" 和 "branch")

当您执行 start..HEAD master 时,您将获得开始和当前 commit/branch 之间的所有提交 AND 所有可从 master 访问的提交。在这种情况下,您实际上指定了 3 个提交:^startHEADmaster。 Git 然后将遍历图表以提供结果:所有可从 HEAD 到达的提交(当前 commit/branch),所有可从 master 到达的提交,但排除所有可到达的提交来自 start