如何在两个分支之间找到待处理的提交,不包括已经挑选/合并的更改?

时间:2017-06-13 04:27:39

标签: git git-merge git-diff git-log

简单场景:我很少在git分支A上提交,它在一段时间后从master分叉。我想找出所有需要合并回master的挂起提交。以下命令给出了这些提交的列表。   $ git log --cherry --oneline master..A

现在,在更复杂的情况下,我有另一个分支B,它也是从master分叉的,并且很少提交我现在想要集成回主服务器。但是,我的几个开发人员已经把他们的一些提交内容挑选到他们的私人"分支(比如,b1,b2,b3 - 所有分支从分支B分叉)然后,他们也已经从他们的私有分支中选择了这些提交到master(使用新的commit-hashes,这与&上的原始提交哈希不同) #39; B'分支)。所以,理想情况下,这些不需要重新合并到主人身上,因为他们已经合并到主人身上(只是通过不同的樱桃选择路线)。

我的问题是:是否有任何git命令可以告诉我哪些来自B的提交仍有待合并?我真的不想看到通过其他一些(即私有,b1,b2,b3)分支合并到master的提交。我假设git很聪明地知道尽管没有直接合并提交,但可能已经合并为通过其他多个分支的樱桃选择的一部分。

在这个图形场景中,我喜欢git命令向我显示3个提交(c7,c8和c9)仍有待合并到master。 Git Merge Scenario

2 个答案:

答案 0 :(得分:2)

git cherry master B-branch

它列出了B-branch上的所有提交,但没有列出每个提交前导+标记的提交。如果该行以-标记开头,则以下提交(B-branch)在master上具有等效提交(通过rebase或cherry-pick),可以忽略。

答案 1 :(得分:1)

如果你想看到分支之间的差异,我建议你看到这个命令,你以友好的方式展示它。

git log --all --graph --pretty=format:'%C(auto)%h%C(auto)%d %s %C(dim white)(%aN, %ar)'