假设您的 git 提交历史如下所示:
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否有可能只列出主、AF 上的提交?换句话说,如果提交是在合并的分支上,我不希望它显示。
假设您的 git 提交历史如下所示:
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否有可能只列出主、AF 上的提交?换句话说,如果提交是在合并的分支上,我不希望它显示。
git log
有选项--first-parent
,所以你不会得到topic
历史。
从 合并时master
,master
提交是合并中的第一个父项。Git 日志允许仅显示带有 --first-parent 的那些提交,因此您得到了正确的东西。
TLDR:git 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
查尔斯的回答对我有用。
git log has option --first-parent --no-merges, so you won't get topic history.
但是,如果您在 Git 活动中使用任何图形用户界面,例如 Git Extension、SourceTree、Tortoise Git、
然后有直接选项可以检查工具中的第一个父级。我想将此答案添加到列表中,因为大多数人发现图形界面很容易。如果需要,您可以直接从工具中挑选来自该特定分支的所有提交。
我附上了两个工具的示例,其他工具也类似:[我已经模糊了用户名,git repo 名称,因为这是一个私有存储库,但您仍然可以了解如何使用工具中的第一个父级]
这不起作用吗?
git log master
git log --stat master