查找什么分支以给定提交的SHA1结尾,而不是在本地获取分支

时间:2019-02-11 09:47:45

标签: git jenkins branch pull-request

我正在尝试确定拉取请求的来源是什么分支。

启动Jenkins作业时,我有权访问上次提交SHA1的拉取请求。 从那里我需要知道哪个分支具有相同的提交SHA1。

由于在工作期间并未提取所有分支,所以我希望保持这种状态。

我的问题是:

如何获取以给定提交的SHA1结尾的远程分支的名称?

2 个答案:

答案 0 :(得分:2)

如果您的Git足够新(2.7.0或更高版本),请使用git branch --points-at。除非您具有镜像克隆,否则您也将需要在这里使用-r来查看远程跟踪名称而不是分支名称。您还需要git fetch所有名称。如果您担心会带来的提交和其他对象的数量,则可以使用浅表提取。

请注意,如果自pull请求以来添加了新的提交,这将无济于事,例如,该名称现在指向要提交的名称,因为在提交时该名称仅在将来。它也不能消除多个分支名称指向 same 提交的情况的歧义,而且这些情况并不罕见。

您可以使用从git ls-remote溢出的名称和哈希ID来实现所有这些相同的目的,但是这需要编写一些代码,而不仅仅是使用git branch --points-at。运行git ls-remote来查看其打印内容(它所做的就是打印其他一些Git的引用和哈希ID,这是运行git fetch的第一步,是git fetch的第一步)。

最终,您获得的所有答案最多都是可疑的。这可能是做您要达到的目标的错误方法。

答案 1 :(得分:1)

您可以通过以下方式找到它

 git branch --contains <commit>

这将为您提供本地分支机构的列表

 git branch -r --contains <commit>

这将为您提供远程跟踪分支机构的列表