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

时间:2020-07-15 20:40:56

标签: git merge version-control bitbucket bitbucket-pipelines

我正在建立一个Bitbucket管道,它具有有用的YML功能,以启动Pull Requests的评估,并启动将提交提交到分支的部署。我似乎找不到的一件事是一种检查分支何时通过提交进行更新的方法,如果提交来自将Branch-X合并到更新的分支Branch-Y中。我想知道提交是来自特定分支的Pull Request还是来自特定分支的合并(分支X是源)。

我当时在想,如果我不能使用Bitbucket的YAML管道命令本地执行此操作,可以使用 git 进行检查。使用in git命令:有没有一种方法可以检查提交到特定分支的源?如果它来自特定分支的合并或来自该分支的Pull Request

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

我不确定这是否可行,但以为我会检查是否有人知道。

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这里是查看提交的一种方式:

如果branch-Y在合并提交上,则可以获取已合并到branch-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,则可以更轻松地使用此信息。