显示直接向分支提交的提交,忽略Git中的合并

当使用git时,有没有办法显示提交到分支,而忽略所有提交合并?

我试图检查在分支上做的代码更改,而忽略了我们在其他合并分支上的代码更改。我知道这是几乎不可能的以这种方式显示差异,但我希望能够找出我需要审查哪些提交。

在许多情况下,父母双方都有相同的权重。 如果你一直在合并其他的变化,那么你可能会发现,这给你你想要的。

git log --no-merges --first-parent 

否则,您可能能够排除其他命名分支的提交。

 git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3 

如果您想查看要合并回主体分支的更改,那么最简单的方法是在本地克隆上执行合并,然后在发布合并之前查看与第一个父级的差异。

你可以使用git cherry ,它会发现你提交的还没有合并到上游,或提交在一个分支,但不是其他。 所以有两个分支名叫“你的分支”和“主人”:

 git cherry -v your-branch master 

将呈现你的提交列表与他们的补丁ID相比较:

 + c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme - 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting + e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake 

你可以注意到前缀“ – ”的提交是在两个分支中出现的提交,而以“+”作为前缀的提交仅在你的分支上可用。

作为替代方法,您可以使用:

 git log --pretty=format:"%h %s" your-branch..master --no-merges 

它会显示你在“你的分支”上完成的提交列表,这些提交列表中还没有出现在“主”

一个非常黑客的方式:

git log --graph --oneline --no-merges thebranch|grep '^\*'