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


86

使用git时,有没有办法显示对分支所做的提交,而忽略合并带来的所有提交?

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

Answers:


123

--no-merges

在许多情况下,父母双方在git中的权重相等。如果您在合并其他更改时始终保持一致,那么您可能会发现这可以满足您的需求。

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

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

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

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


这第一个命令是优秀“适当的分支每次特征”(在plus.google.com/109096274754593704906/posts/R4qkeyRadLR
亚当Dymitruk

1
似乎我大部分都是从该分支提交的,但是它仍然显示从主服务器提取的提交。我们有太多分支机构,因此排除其他分支机构是不切实际的。
Channel Cat

@ChannelCat为什么不将您的分支重新建立到另一个分支,然后所有提交都将在末尾?
马克·英格拉姆

7

您可以使用git cherry它,它会发现尚未合并到上游的提交,或者找到一个分支上但其他分支上没有的提交。因此,给了两个分支,分别命名为“ your-branch”和“ master”:

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行中,分支名称之间应该有三个点,而不是两个点。像这样:您的分行...主人
vedranm '18

@vedranm您不需要3个点,只需两个...虽然3个工作原理与2个工作原理相同。
Zzzach ...

4

一种非常骇人听闻的方式:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.