Git 如何在特定存储库中列出包含给定提交的分支?

Git 如何在特定存储库中列出包含给定提交的分支?,git,git-branch,git-tag,Git,Git Branch,Git Tag,因此,我已经阅读了许多其他帖子,我已经知道如何使用: git分支--包含标记 但是,我仍然需要知道如何在特定存储库中列出包含给定提交(或标记)的分支 背景 我已使用以下方法从远程存储库归档文件中提取了标记列表: git ls-remote --tags archive 现在,对于提取的每个标记,我希望获得包含分支的列表。 使用命令: git分支--包含标记 没有帮助,因为标记未找到,因为它们不存在于origin存储库中。鉴于您声明的限制(特别是,您有一个从标记名到SHA-1 ID的映射,并且没

因此,我已经阅读了许多其他帖子,我已经知道如何使用:
git分支--包含标记

但是,我仍然需要知道如何在特定存储库中列出包含给定提交(或标记)的分支

背景 我已使用以下方法从远程存储库
归档文件
中提取了标记列表:

git ls-remote --tags archive
现在,对于提取的每个标记,我希望获得包含分支的列表。 使用命令:
git分支--包含标记

没有帮助,因为标记未找到,因为它们不存在于
origin
存储库中。

鉴于您声明的限制(特别是,您有一个从标记名到SHA-1 ID的映射,并且没有任何其他信息),您无法获得所需的内容

谓词的定义:

分支名称包含提交id

简单地说,id是名称映射到的SHA-1的ancestor1。要测试这一命题,您必须能够遍历图,从名称映射到的节点开始,遍历图中的所有路径,直到节点用完或遇到给定id为止

不过,要遍历图形,您必须拥有该图形

这意味着只有两种方法可以找到答案:自己绘制图表,或者让某个实体绘制图表来回答问题。git和git服务器没有内置任何东西来实现后者(尽管有些服务器可能会将其作为附加组件提供)

另一方面,如果您可以运行
gitlsremote
,您也可以检索存储库,因此您可以自己回答这个问题(当然要以检索存储库为代价)



1在本定义中,节点是其自己的祖先。当然,在这种特殊的退化情况下(标记和分支尖端匹配),您可以通过查看分支尖端的SHA-1 ID立即回答问题,这些值可通过
git ls remote

获得。您需要
git branch
--all
--contains
提交
来查看来自其他远程的分支

这仍然取决于您从任何远程位置获取要检查的提交-
git fetch archive


没有它,您的本地存储库就不会有提交,而且几乎什么都不会工作。例如,如果没有提交,就不能
git log
等。有各种各样的(半工作)解决方法,比如对服务器进行SSHing并对其进行处理(如果有),或者使用各种web API(GitHub,Stash)(如果有),但基本上您需要提交
git ls remote
是一个例外,它可以在远程存储库上工作,而不需要本地任何东西。

您是否执行了
git fetch archive
(或pull)?否。我没有。把它和你答案中的其他说明结合起来,就成功了。