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

显示直接对分支的提交,忽略Git中的合并,git,merge,branch,diff,Git,Merge,Branch,Diff,在使用git时,有没有一种方法可以显示对分支所做的提交,而忽略通过合并引入的所有提交 我试图查看在一个分支上所做的代码更改,而忽略我们在合并到中的其他分支上所做的更改。我知道以这种方式显示差异几乎是不可能的,但我希望能够找到需要查看的提交。--无合并 在git的许多上下文中,双亲的权重相等。如果你总是在合并中的其他更改时保持一致,那么你可能会发现这给了你想要的 git log --no-merges --first-parent 否则,您可以从其他命名分支中排除提交 git log --no-

在使用git时,有没有一种方法可以显示对分支所做的提交,而忽略通过合并引入的所有提交

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

--无合并
在git的许多上下文中,双亲的权重相等。如果你总是在合并中的其他更改时保持一致,那么你可能会发现这给了你想要的

git log --no-merges --first-parent
否则,您可以从其他命名分支中排除提交

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

一种非常粗俗的方法:


git log--graph--oneline--no合并分支| grep'^\*'
您可以使用
git cherry
为此,它会发现您提交的内容尚未合并到上游,或者提交的内容在一个分支上,而不是在另一个分支上。因此,给出了两个名为“你的分支”和“大师”的分支:

将向您显示与其修补程序id相比较的提交列表:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake
您可以注意到,前缀为“-”的提交是出现在两个分支中的提交,而前缀为“+”的提交仅在您的分支中可用

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

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

这将向您显示在“您的分支”上完成的、但在“主控”上尚未出现的提交列表。

这第一个命令在“每个功能的正确分支”(property branch per feature)方面非常出色。似乎我大部分提交都来自该分支,但它仍然显示从主控中提取的提交。我们有这么多分支,排除其他分支是不切实际的。@ChannelCat为什么不将您的分支重新设置到另一个分支上,那么所有提交都将结束?由于我尝试编辑您的答案被拒绝,我将在这里发布:在您的最后一行git中,分支名称之间应该有三个点,而不是两个点。像这样:你的分支。。。master@vedranm你不需要三个点,只需要两个…虽然三个点的工作方式与二个点的工作方式相同。
git log --pretty=format:"%h %s" your-branch..master --no-merges