如何检查提交是否在master分支的直接历史记录中?

时间:2019-05-17 12:59:32

标签: git

我正在尝试编写检查以确保子模块实际上指向该子模块中master分支的直接历史记录中的提交(不是要在master分支上合并的分支)。 / p>

我尝试使用以下命令解析git日志输出:

    git log --format=format:%H --first-parent master | grep COMMITID

但是我觉得git提供了一个更好的解决方案,这将依赖于git中更标准的功能(而不是通过管道传递到grep)。

例如,超级项目包含以下子模块:

     A---B---C topic
     /
D---E---F---G master

如果超级项目直接指向主题,则将报告错误,因为下次超级项目将子模块更新为master时,主题将丢失。

相反:

     A---B---C topic
     /        \
D---E---F---G---H master

如果超级项目指向母版,则不会报告错误。

很不错的一点是能够检查主题是否实际上已经合并,但是当前这是可选的,因为在运行脚本时,我什至不确定在合并之前我是否拥有主题的提交ID。

1 个答案:

答案 0 :(得分:1)

git分支具有--contains,其中列出了包含提交的分支:

例如:

git branch master --contains 93730c0d57635784c67f71e56cba1548588c90d4

有关更多详细信息,请使用

git branch --help