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

时间:2011-12-15 21:53:24

标签: git merge branch diff

使用git时,有没有办法显示对分支的提交,而忽略了通过合并引入的所有提交?

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

3 个答案:

答案 0 :(得分:110)

--no-merges

在git的许多情况下,父母双方的权重相同。如果您在合并其他更改时始终保持一致,那么您可能会发现这可以为您提供所需的内容。

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

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

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

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

答案 1 :(得分: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

将显示“your-branch”上尚未出现的“master”上提交的提交列表

答案 2 :(得分:3)

一种非常黑客的方式:

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

相关问题