首页 > 解决方案 > Git log rev range master 在 master 和 branch 之间给出不同的结果

问题描述

我在一个发布分支上,在那里我应用了来自master(主要开发)的精选提交。

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

在分支上,我通常将那里的最新提交与master进行比较:

git log --oneline -20

git log --oneline -20 master

但是现在我想检查一系列提交,经过一些试验和错误,我最终使用了:

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

其中,当master被签出时,会给出预期的结果 - 从<myhash>(包括)到 master 的最新提交列表。

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

标签: gitgit-log

解决方案


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

git log --oneline start..branch

start开始提交在哪里branch,最终提交在哪里。Git 将显示所有可访问的提交branch并排除那些可访问的提交start(相同的行为通过: 实现git log ^start branch,即“未启动”和“分支”)

当您这样做时,您将获得 startstart..HEAD master当前提交/分支之间的所有提交以及所有可从. 在这种情况下,您实际上指定了 3 个提交:、和. 然后,Git 将遍历图表,为您提供结果:所有可从(当前提交/分支)访问的提交,所有可从 访问的提交,但排除所有可从的提交master^startHEADmasterHEADmasterstart


推荐阅读