105

我目前正忙于一个有很多分支的项目,并且我有一个标记用于最后一次更改,该更改是在其中一个分支上完成的。但我不清楚这个标签在哪个分支上。

如何找出标签在哪个分支上?

4

8 回答 8

145

更短:

git branch --contains tags/<tag>

(它适用于任何树状参考)


如果您可以找到标签所指的提交

 git rev-parse --verify tags/<tag>^{commit}
 # or, shorter:
 git rev-parse tags/<tag>~0

然后您可以找到包含该提交的分支

git branch --contains <commit>

正如user3356885在下面评论的那样,对于获取的分支(远程命名空间中的分支)

git branch -a --contains tags/<tag>
git branch -a --contains <commit>
于 2013-04-04T08:57:03.930 回答
40

如果“git branch --contains”什么都不做,请确保您包含所有分支,包括远程和本地分支:

git branch -a --contains <tag>

从 git 帮助:

具体的 git-branch 操作:-a, --all 列出远程跟踪和本地分支

于 2016-05-12T16:14:39.503 回答
7

关于@VonC 关于查找标签引用的提交的评论,只需使用:

git show <tag>

由于标签与特定提交相关联,因此它可用于显示该提交 - 这将为您提供完整的提交详细信息。

于 2015-03-27T13:46:19.467 回答
6
git branch --contains tag

对我没有任何帮助,但我在git gui中找到了解决这个问题的方法。

像这样开始:

git gui

(在我的 Ubuntu 上,我必须先安装它sudo apt-get install git-gui。)

然后我选择了菜单项Repository -> Visualize All Branch History。然后在结果窗口中选择菜单项File -> List References

另一个窗口弹出,列出了我所有的标签(和其他参考)。这些是可点击的,点击其中一个后,我只需要检查左下角的分支列表即可。像这样:

Parent: somesha (message)
Parent: someothersha (another message)
Child:  anothersha (yet another message)
Branches: branch1, master, remotes/origin/branch2, remotes/upstream/branch1, etc
Follows: v1.1.2
Precedes: v1.1.4
于 2015-10-28T14:31:31.047 回答
1

你也可以试试这个,有类似的用例,这对我有用

git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA  | sed "s/.*\///"

略有不同,但从@ttfreeman 的回答中汲取灵感

于 2020-06-10T11:11:42.523 回答
0

使用标签可以标记参考。因此,当您在开发分支上并标记此状态时。您的标签在实际参考上。因此,在这种情况下,您可以查看gitk或其他显示树的工具。在那里你可以看到标签在哪个参考上。

git:是否有类似每个分支的标签?
http://git-scm.com/book/en/Git-Basics-Tagging

这是一个很好的解释。

于 2013-04-04T08:56:30.757 回答
0

标签总是指提交号。使用该标签号,您可以使用以下命令找到放置标签的分支:

git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"
于 2019-11-04T13:26:43.873 回答
-1

步骤 1. 获取提交 ID:

git show {tag name}

步骤 2. 复制提交 ID 并粘贴以获取所有分支:

By example:
git branch --contains 94a152c2d1c6830c5a044ecf20526d51e64bda83
于 2021-08-19T19:57:44.003 回答