“git log --first-parent” 不排除任何初始提交

问题描述

我有一个像这样的提交图,其中 AG 是初始提交(没有父提交),而 BD 是合并提交(带有 {{ 1}} 和 A 作为他们的第一任父母):

C

我想让 F / \ / \ A--B--C--D--HEAD / G--E 给我看:

git log --graph

A--B--C--D--HEAD / G--E 给出:

git log --graph --first-parent

但我想包括 A--B--C--D--HEAD G,因为 E 没有父母。因此,当它遇到合并提交 G 时,我希望 B 也跟随第二个父级 (git log --first-parent),因为它允许它到达初始提交 E。>

我正在寻找的逻辑是“G,但前提是所有从合并提交可访问的初始提交都可从其第一个父级访问”。

有没有办法用 --first-parentgit log 来实现这一点?

解决方法

我看不到使用 git loggit rev-list 的内置选项来实现您想要的目标的方法。

在您的图表中,EB 的第二个父项,因此它被 --first-parent 排除。


我能想到的最接近的是用两个命令来做:

(git log --graph --first-parent B..HEAD; git log --graph B) | less

BC 之间的连接不会在输出中绘制,但这应该会为您提供正确的提交列表。