是否有可能显示git分支是否具有相同的提交,如果其中一个分支已经重新设置,因此它们没有相同的SHA1 ID?

时间:2013-08-19 23:48:05

标签: git

我试图获得运行git branch --merged的相同效果,但允许在某些时候已经重新设置的相同提交(提交消息+差异)。

1 个答案:

答案 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 chapterFREE online Pro Git book了解有关三点--left-right提交范围语法的详情。