我试图获得运行git branch --merged
的相同效果,但允许在某些时候已经重新设置的相同提交(提交消息+差异)。
答案 0 :(得分:3)
将git log
与--cherry-mark
选项一起使用即可。具体来说,您可以在分支A
和分支B
之间看到一组相同的提交,其中包含以下内容:
git log --cherry-mark --oneline --graph --decorate A...B
示例输出:
$ git log --cherry-mark --oneline --graph --decorate master...feature
= 1e4f971 (HEAD, feature) Add some greetings
= 926857a Add some greetings
= bfede5b Add some greetings
= 14099b6 (master) Add some Hellos
= a0576fa Add some Hellos
= 8822553 Add some Hellos
在上面的输出中,您将看到feature
的输出中的前3个提交相当于master
的输出中的前3个提交,尽管sha ID和commit消息是不同。
来自official Linux Kernel Git documentation for git log
:
--cherry-mark
与
--cherry-pick
一样(见下文),但标记等效提交=
而不是省略它们,而不等价的提交+
。--cherry-pick
当提交集受限于对称差异时,省略任何在“另一方”引入相同更改的提交。
例如,如果您有两个分支A和B,通常只在其中一侧列出所有提交的方法是使用
--left-right
(请参阅下面{{1}的说明中的示例} 选项)。然而,它显示了从另一个分支中挑选出来的提交(例如,“b上的第3个”可以从分支A中挑选出来)。使用此选项,这些提交对将从输出中排除。
您还可以在Revision Selection chapter的FREE online Pro Git book了解有关三点--left-right
提交范围语法的详情。