假设您的git commit历史记录如下:
A---B---C---D---E---F master
\ /
X---Y---Z topic
可以让git只列出master,AF上的提交吗?换句话说,如果提交在合并的分支上,则我不希望其显示。
假设您的git commit历史记录如下:
A---B---C---D---E---F master
\ /
X---Y---Z topic
可以让git只列出master,AF上的提交吗?换句话说,如果提交在合并的分支上,则我不希望其显示。
git log
允许只显示带有的提交--first-parent
,因此您可以找到正确的东西
Answers:
git log
具有option --first-parent
,所以您将不会获得topic
历史记录。
从合并时master
,master
提交是合并中的第一个父级。Git日志仅显示带有--first-parent的那些提交,因此您可以找到正确的东西。
--first-parent
:)与--no-merges
您结合可以隐藏合并提交
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扩展,SourceTree,Tortoise Git,
然后,有直接的选项来检查工具中的第一个父对象。我想将这个答案添加到列表中,因为大多数人都觉得图形界面很容易。并且,如果需要,您可以直接从工具的特定分支中挑选所有提交。
我已经附上了两个工具的示例,其他工具也是如此:[我已经模糊了用户名,git repo名称,因为这是一个私有存储库,但您仍然可以从工具中了解如何使用第一个父级]
这行不通吗?
git log master
git log --stat master
D
,并Z
为合并后的部门的一部分?