Git:如何列出提交在这个分支但不是从合并分支

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

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

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

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

当从master合并, master承诺是合并的第一个父母。 Git日志允许只显示那些提交–first-parent,所以你得到正确的东西。

还有另外一种通用的方式来解决这个问题,它不依赖于在某些情况下会有帮助的--first-parent 。使用分支排除filter

git log origin/topic ^origin/master这将给你一个origin/topic的日志与所有的origin/master的提交被删除。

你也可以添加--no-merges ,这将隐藏你可能或不想要的合并提交。

另一个方便的提示是使用shortlog log而不是log ,这会给你更多的简化摘要,可以方便地发布注释,或者在分支中传播什么。

更新
重新阅读后,你实际上会想要几乎与我发布的相反。 但是最终会排除master和foo( git log origin/master ^origin/foo )上的所有内容。 但是你也可以得到你所要求的(隐藏所有提交是合并的一部分)与git log origin/master --no-merges

这不行吗?

 git log master git log --stat master