在远程 git 存储库中查找标签的分支
Find branch of a tag on remote git repository
我正在尝试使用图形用户界面自动执行构建步骤,并希望创建一个 json 文件,其中包含所有可用的标签和分支头以供选择。
我已经可以使用
列出存储库中的所有分支和标签
git ls-remote --tags/heads url-of-repo
现在我想知道,哪个标签属于一个分支。
我可以做类似
的事情
git branch --contains tags/<tag>
但我想避免在本地检查所有存储库以获取此信息。
也许有一个命令可以直接显示一个分支的所有标签?
克隆一个,裸机,
git clone --bare url-of-repo
每次要列出分支,先更新分支和标签,
cd path-to-the-bare-repo
git fetch origin +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
然后是运行
git branch --contains tags/<tag>
我推荐 git for-each-ref,它允许格式化输出并且对脚本更友好。例如,
git for-each-ref refs/heads --contains tags/<tag> --format="%(refname:lstrip=2)"
如果您不想在脚本中使用 cd
,您也可以导出 GIT_DIR
并取消设置。
export GIT_DIR=path-to-the-bare-repo
git fetch origin +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
git for-each-ref refs/heads --contains tags/<tag> --format="%(refname:lstrip=2)"
unset GIT_DIR
或者干脆
GIT_DIR=path-to-the-bare-repo git fetch origin +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
GIT_DIR=path-to-the-bare-repo git for-each-ref refs/heads --contains tags/<tag> --format="%(refname:lstrip=2)"
如果您不想制作本地克隆,并且您可以访问托管服务器。另一种选择是 运行 一个 Web 服务来查询服务器托管的存储库中的分支。您可以使用 django
在几分钟内编写并 运行 这样的服务。
我正在尝试使用图形用户界面自动执行构建步骤,并希望创建一个 json 文件,其中包含所有可用的标签和分支头以供选择。 我已经可以使用
列出存储库中的所有分支和标签git ls-remote --tags/heads url-of-repo
现在我想知道,哪个标签属于一个分支。 我可以做类似
的事情git branch --contains tags/<tag>
但我想避免在本地检查所有存储库以获取此信息。 也许有一个命令可以直接显示一个分支的所有标签?
克隆一个,裸机,
git clone --bare url-of-repo
每次要列出分支,先更新分支和标签,
cd path-to-the-bare-repo
git fetch origin +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
然后是运行
git branch --contains tags/<tag>
我推荐 git for-each-ref,它允许格式化输出并且对脚本更友好。例如,
git for-each-ref refs/heads --contains tags/<tag> --format="%(refname:lstrip=2)"
如果您不想在脚本中使用 cd
,您也可以导出 GIT_DIR
并取消设置。
export GIT_DIR=path-to-the-bare-repo
git fetch origin +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
git for-each-ref refs/heads --contains tags/<tag> --format="%(refname:lstrip=2)"
unset GIT_DIR
或者干脆
GIT_DIR=path-to-the-bare-repo git fetch origin +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*
GIT_DIR=path-to-the-bare-repo git for-each-ref refs/heads --contains tags/<tag> --format="%(refname:lstrip=2)"
如果您不想制作本地克隆,并且您可以访问托管服务器。另一种选择是 运行 一个 Web 服务来查询服务器托管的存储库中的分支。您可以使用 django
在几分钟内编写并 运行 这样的服务。