显示直接向分支提交的提交,忽略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 '^\*'