102

假设您的 git 提交历史如下所示:

A---B---C---D---E---F master
     \         /
      X---Y---Z topic

是否有可能只列出主、AF 上的提交?换句话说,如果提交是在合并的分支上,我不希望它显示。

4

4 回答 4

143

git log有选项--first-parent,所以你不会得到topic历史。

从 合并时mastermaster提交是合并中的第一个父项。Git 日志允许仅显示带有 --first-parent 的那些提交,因此您得到了正确的东西。

于 2012-04-20T14:44:08.080 回答
21

TLDRgit log origin/master --no-merges将为您提供主日志并排除任何合并的提交(在本例中为 x, y, z )

原始点

还有另一种通用方法可以解决这个问题,它不依赖于--first-parent在某些情况下会有所帮助..使用分支排除过滤器

git log origin/topic ^origin/master 这将为您origin/topic提供所有已origin/master删除提交的日志。

您还可以添加--no-merges其中将隐藏您可能想要或可能不想要的合并提交。

另一个方便的技巧是使用它shortlog而不是log它会给你更多的简短摘要,可以方便地用于发布说明,或交流分支中的内容。

更新
重新阅读后,您实际上会想要与我发布的内容几乎相反的内容;但是它最终会排除 master 和 foo( git log origin/master ^origin/foo) 上的所有内容。但是,您也可以通过git log origin/master --no-merges

于 2014-10-27T20:38:56.230 回答
0

查尔斯的回答对我有用。

git log has option --first-parent --no-merges, so you won't get topic history.

但是,如果您在 Git 活动中使用任何图形用户界面,例如 Git Extension、SourceTree、Tortoise Git、

然后有直接选项可以检查工具中的第一个父级。我想将此答案添加到列表中,因为大多数人发现图形界面很容易。如果需要,您可以直接从工具中挑选来自该特定分支的所有提交。

我附上了两个工具的示例,其他工具也类似:[我已经模糊了用户名,git repo 名称,因为这是一个私有存储库,但您仍然可以了解如何使用工具中的第一个父级]

  1. Git 扩展
    • 打开 Git Extension -> Checkout the feature branch you want to see the commits,有一个选项可以选择第一个提交,如图所示:

在此处输入图像描述

  1. 乌龟 Git
    • 打开存储库文件夹 -> 单击从 Tortoise Git 显示日志 -> 签出分支并选择第一个提交,如图所示

在此处输入图像描述

于 2020-10-27T07:40:39.110 回答
-4

这不起作用吗?

git log master
git log --stat master
于 2012-04-20T14:28:23.537 回答