Git 日志 rev 范围 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的最新提交列表。

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

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

git log --oneline start..branch

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

当您执行start..HEAD master时,您将获得开始和当前提交/分支之间的所有提交以及可从master访问的所有提交。在这种情况下,您实际上指定了 3 个提交:^startHEADmaster。然后 Git 将遍历图形以给出结果:可从HEAD(当前提交/分支(访问的所有提交,可从master访问的所有提交,但排除可从start访问的所有提交

最新更新