Git:查找最后一个合并到分支中的SHA



我有一个master分支和一个dev分支,我定期将它们合并到master:

dev      --A---B---C---D---E---F---G--
/              
master ----------M1------M2----------

M1和M2是合并提交。

如何找到已合并到master中的dev上最后一次提交的SHA?在这个例子中,我想要commit D.的SHA

这将是最近的共同祖先,或合并基:

git merge-base master dev

如果从未将合并到开发分支,那么git merge-base就是黄金。如果您也从master进行合并,则必须检查master的第一个父级历史记录,以查找最近的合并提交,该提交的第二个父级在dev的第一个其父级历史记录中。

冲击力:

awk '   ARGIND==1 { tomaster[$NF]=1; next }
$1 in tomaster { print; exit }
' <(git rev-list --first-parent --merges --parents master) 
<(git rev-list --first-parent dev)