最初从topic1
分支的分支master
。让我们说topic1
的原始所有者没有将该分支正确合并回master
,而是进行了一次樱桃挑选操作,但错过了一些提交。 / p>
几个月过去了,最后我意识到topic1
仍在那里。此时,已经过了很长时间以至于我没有可靠的方法来确定topic1
上master
所代表的累积补丁是否存在。
我想要的是能够git diff topic1..master
但隐藏 master
上topic1
中不存在的topic1
}。基本上我只是希望看到差异的一部分显示master
中LIKE 'C[A@]PR[I!]C[O0]RN'
中不存在的变化{{1}}。这可能吗?如果是这样,我该怎么做?
我正在使用Git 2.8 +
答案 0 :(得分:1)
您可以先使用--cherry-pick
的{{1}}选项,将{{1>} 未挑选的提交列表转换为{{1} }}
来自git-log
的文件:
<强> - 樱桃挑选强>
当提交集受限时,省略任何在“另一方”上引入相同更改的提交 具有对称差异。
这里有趣的是git log
选项使用提交的 diff - 而不是提交的SHA-1哈希 - 以确定引入同一组更改的提交是否是出现在另一个分支。
来自git-cherry
的相关文档:
在删除空格后,等价测试基于diff 和行号。因此git-cherry会检测提交的时间 通过
topic1
,master
或--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