Git查找上次提交是否来自特定分支的合并



我正在设置一个Bitbucket Pipeline,它有有用的YML函数来启动Pull Requests的valodations,并启动对分支的部署表单提交。有一件事我似乎找不到,那就是检查分支何时通过提交进行更新,如果提交来自于将分支X合并到我更新的分支分支Y中。我想知道提交是来自特定分支的Pull Request,还是来自特定分支(分支-X是源(的合并。

我在想,如果我不能用Bitbucket的YAML管道命令原生地做到这一点,我可以使用git来检查这一点。使用in git命令:有没有一种方法可以检查提交到特定分支的来源?如果它来自特定分支的合并,或者来自该分支的Pull Request

我的分支将始终保留相同的名称,因此我们可以说,如果我将分支-X合并到分支Y中,我可以通过git发现对分支Y的提交是否来自分支Y的合并。

我不确定这是否可能,但我想看看是否有人知道。

提前感谢您在这方面的帮助。

以下是查看提交的方法:

如果分支Y正在进行合并提交,则可以获得合并到分支Y中的提交的哈希:

# 'commit^2' means : the 2nd parent of 'commit'
mcommit=$(git rev-parse branch-Y^2)

然后,您可以检查此提交是否与现有分支的当前状态匹配:

git show-ref | grep $mcommit
# if 'refs/remotes/origin/branch-X' appears in the results, then 'branch-X' is a candidate

如果gitlab收到通知并更新其分支时,branch-X仍处于合并时的状态,这将起作用。

此外:如果两个分支指向mcommit,您将无法区分哪一个是实际合并的。


另一种方法是在提交消息中查找信息:

如果你在PR上有一个模板消息,其中清楚地提到了合并的分支或PR id,你可能可以更容易地使用这些信息。

最新更新