我正在尝试确定拉取请求的来源是什么分支。
启动Jenkins作业时,我有权访问上次提交SHA1的拉取请求。 从那里我需要知道哪个分支具有相同的提交SHA1。
由于在工作期间并未提取所有分支,所以我希望保持这种状态。
我的问题是:
如何获取以给定提交的SHA1结尾的远程分支的名称?
答案 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>
这将为您提供远程跟踪分支机构的列表