Git Log Rev Range Master在主节点和分支之间给出不同的结果

时间:2019-08-29 08:14:55

标签: git git-log

我在发行分支上,我在其中应用 master (主要开发)中精选的提交。

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

在分支上时,我通常将与 master 有关的最新提交与以下内容进行比较:

git log --oneline -20

git log --oneline -20 master

但是现在,我想检查一定范围的提交,在经历了一些试验和错误之后,我最终使用了:

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

检出 master 后,将给出预期的结果-从<myhash>(含)到最新的master提交列表。

但是,如果在其他分支上运行时,同一命令会产生不同的结果(实际上,它似乎提供了从分支开始到最新的所有提交):为什么?

1 个答案:

答案 0 :(得分:3)

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

git log --oneline start..branch

其中start是起始提交,branch是最终提交。 Git将显示branch可以到达的所有提交,而排除start可以到达的所有提交(通过git log ^start branch实现相同的行为,即“未开始”和“分支”)

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