我怎样才能看到哪个物理帅哥不在另一个分支?

时间:2016-08-08 14:09:48

标签: git

最初从topic1分支的分支master。让我们说topic1的原始所有者没有将该分支正确合并回master,而是进行了一次樱桃挑选操作,但错过了一些提交。 / p>

几个月过去了,最后我意识到topic1仍在那里。此时,已经过了很长时间以至于我没有可靠的方法来确定topic1master所代表的累积补丁是否存在。

想要的是能够git diff topic1..master隐藏 mastertopic1中不存在的topic1 }。基本上我只是希望看到差异的一部分显示masterLIKE 'C[A@]PR[I!]C[O0]RN' 中不存在的变化{{1}}。这可能吗?如果是这样,我该怎么做?

我正在使用Git 2.8 +

1 个答案:

答案 0 :(得分:1)

您可以先使用--cherry-pick的{​​{1}}选项,将{{1>} 未挑选的提交列表转换为{{1} }}

来自git-log的文件:

  

<强> - 樱桃挑选
  当提交集受限时,省略任何在“另一方”上引入相同更改的提交   具有对称差异。

这里有趣的是git log选项使用提交的 diff - 而不是提交的SHA-1哈希 - 以确定引入同一组更改的提交是否是出现在另一个分支。

来自git-cherry的相关文档:

  

在删除空格后,等价测试基于diff   和行号。因此git-cherry会检测提交的时间   通过topic1master--cherry-pick“复制”。

这样的提交据说是等效的补丁

因此,git-cherry-pick排除来自git-am的提交 已在git-rebase中挑选出来,只留下那些不是。我们添加了git log --cherry-pick master...topic1选项,表示我们只对查看范围右侧的提交感兴趣,即topic1

master

我们可能还想从选择中排除合并提交,因此我们添加了--right-only选项:

topic1

最后,我们添加git log --cherry-pick --right-only master...topic1 选项以获取这些提交的差异。最后的命令变为:

--no-merges