查找以给定提交的 SHA1 结尾的分支,而不是在本地获取分支
Finding what Branch ends with a given commit's SHA1, while not fetching branches locally
我正在尝试确定哪个分支是拉取请求的来源。
启动 Jenkins 作业时,我可以访问最后一次提交 SHA1 的拉取请求。
从那里我需要知道哪个分支具有相同的提交 SHA1。
由于在作业期间并非所有分支都被提取,我想保持这种状态。
我的问题是:
如何获取以给定提交的 SHA1 结尾的远程分支的名称?
您可以通过
找到它
git branch --contains <commit>
这将为您提供当地分支机构的列表
或
git branch -r --contains <commit>
这会给你一个远程跟踪分支列表
如果您的 Git 足够新(2.7.0 或更高版本),请使用 git branch --points-at
。除非你有一个镜像克隆,否则你也需要在这里使用 -r
来查看远程跟踪名称而不是 b运行ch 名称。您还需要 git fetch
所有姓名。如果您担心这将带来的提交和其他对象的数量,您可以使用浅提取。
请注意,如果自拉取请求以来添加了新的提交,这将无济于事,这样名称现在指向提交,在提交时,只是在未来。它也不能消除多个 b运行ch 名称指向 same 提交的情况,这种情况并不少见。
您可以使用从 git ls-remote
溢出的名称和哈希 ID 实现所有这些相同的事情,但这需要编写一些代码,而不仅仅是使用 git branch --points-at
。 运行 git ls-remote
查看它打印的内容(它所做的只是打印一些其他 Git 的引用和哈希 ID,这是通过 git fetch
的第一步获得的如果你 运行 git fetch
).
最终,你得到的任何答案充其量都是可疑的。这可能是您想要实现的目标的错误方法。
我正在尝试确定哪个分支是拉取请求的来源。
启动 Jenkins 作业时,我可以访问最后一次提交 SHA1 的拉取请求。 从那里我需要知道哪个分支具有相同的提交 SHA1。
由于在作业期间并非所有分支都被提取,我想保持这种状态。
我的问题是:
如何获取以给定提交的 SHA1 结尾的远程分支的名称?
您可以通过
找到它 git branch --contains <commit>
这将为您提供当地分支机构的列表
或
git branch -r --contains <commit>
这会给你一个远程跟踪分支列表
如果您的 Git 足够新(2.7.0 或更高版本),请使用 git branch --points-at
。除非你有一个镜像克隆,否则你也需要在这里使用 -r
来查看远程跟踪名称而不是 b运行ch 名称。您还需要 git fetch
所有姓名。如果您担心这将带来的提交和其他对象的数量,您可以使用浅提取。
请注意,如果自拉取请求以来添加了新的提交,这将无济于事,这样名称现在指向提交,在提交时,只是在未来。它也不能消除多个 b运行ch 名称指向 same 提交的情况,这种情况并不少见。
您可以使用从 git ls-remote
溢出的名称和哈希 ID 实现所有这些相同的事情,但这需要编写一些代码,而不仅仅是使用 git branch --points-at
。 运行 git ls-remote
查看它打印的内容(它所做的只是打印一些其他 Git 的引用和哈希 ID,这是通过 git fetch
的第一步获得的如果你 运行 git fetch
).
最终,你得到的任何答案充其量都是可疑的。这可能是您想要实现的目标的错误方法。