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

Git:查找合并到分支中的最后一个SHA,git,merge,Git,Merge,我有一个主分支和一个开发分支,定期合并到主分支: dev --A---B---C---D---E---F---G-- / \ \ master ----------M1------M2---------- M1和M2是合并提交 我如何才能找到已合并到master中的dev上最后一次提交的SHA?在本例中,我希望commit D.的SHA是最新的公共祖先,或合并基: git merge-base master dev 如果您从未合并到dev分支

我有一个主分支和一个开发分支,定期合并到主分支:

dev      --A---B---C---D---E---F---G--
        /       \       \
master ----------M1------M2----------
M1和M2是合并提交


我如何才能找到已合并到master中的dev上最后一次提交的SHA?在本例中,我希望commit D.的SHA是最新的公共祖先,或合并基:

git merge-base master dev
如果您从未合并到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)
awk'ARGIND==1{tomaster[$NF]=1;next}
tomaster{打印;退出}中的$1
'