假设您的git提交历史记录如下:
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否可以让git列表只有master,A-F上的提交?换句话说,如果提交是在合并分支中,我不希望它显示。
答案 0 :(得分:119)
git log
有选项--first-parent
,因此您无法获得topic
历史记录。
从master
合并时,master
提交是合并中的第一个父项。 Git log只允许使用--first-parent显示那些提交,所以你得到了正确的东西。
答案 1 :(得分:16)
还有另一种通用方法可以解决这个问题,它不依赖--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
答案 2 :(得分:0)
查尔斯的答案对我有用。
git log has option --first-parent --no-merges, so you won't get topic history.
但是,如果您对Git活动使用任何图形用户界面,例如Git扩展,SourceTree,Tortoise Git等,
然后,可以使用直接选项来检查工具中的第一个父对象。我想将这个答案添加到列表中,因为大多数人都觉得图形界面很容易。并且您可以根据需要直接从工具的特定分支中挑选所有提交。
我已经附上了两个工具的示例,其他工具也是如此:[我已经模糊了用户名和git repo名称,因为这是一个私有存储库,但是您仍然可以先了解如何使用工具中的父项]
答案 3 :(得分:-3)
这不起作用吗?
git log master
git log --stat master