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


Answers:


118

甚至更短:

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>

6
在我的Git版本1.7.1上,我可以简单地执行git branch --contains <tag>
Dan Moulding

@DanMoulding是的,我已经编辑了答案以反映这一点。最初,我对查找附加到标签的提交感兴趣。
VonC

6
在这种情况下,寻找在远程分支上创建的标签不会产生任何结果。换句话说,对于本地不存在的分支不会产生任何结果。应该使用-a选项。git branch -a --contains <tag>。同样适用于提交。
user3356885

1
不幸的是,这返回了多个结果:*(HEAD在82dd3f0处分离)master refs / tags / 0.0.1-test-masterBr->我想以编程方式访问分支,没有HEAD信息或标签本身
herm

@herm在这种情况下,请尝试git branch --no-merge tags/<a-tag>
VonC

30

如果“ git branch --contains”不执行任何操作,请确保包括所有分支,包括远程和本地分支:

git branch -a --contains <tag>

从git帮助中:

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


5
git branch --contains tag

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

像这样启动它:

git gui

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

然后,选择菜单项“存储库->可视化所有分支历史记录”。然后,在出现的窗口中,选择菜单项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

3

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

git show <tag>

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



0

标签始终引用提交编号。使用该标签号,您可以使用以下命令找到放置标签的分支:

git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"

0

您也可以尝试一下,有类似的用例,这对我有用

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

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


-1

git reflog --date = local | grep feature_xxx


3
我怀疑这是否有用-甚至根本没有用。为了使我信服,请添加一个解释,说明其工作原理以及为什么会有所帮助。
Yunnosch
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.