Git:如何找出标签在哪个分支上?
Posted
技术标签:
【中文标题】Git:如何找出标签在哪个分支上?【英文标题】:Git: How to find out on which branch a tag is? 【发布时间】:2013-03-26 05:54:53 【问题描述】:我目前正忙于一个有很多分支的项目,并且我有一个标签,用于记录在其中一个分支上完成的最后更改。但我不清楚这个标签在哪个分支上。
如何找出标签在哪个分支上?
【问题讨论】:
【参考方案1】:更短:
git branch --contains tags/<tag>
(它适用于任何树状参考)
如果你能找到which commit a tag refers to:
git rev-parse --verify tags/<tag>^commit
# or, shorter:
git rev-parse tags/<tag>~0
然后你可以找到which branch contain that commit。
git branch --contains <commit>
作为user3356885 下方的commented,用于获取的分支(远程命名空间中的分支)
git branch -a --contains tags/<tag>
git branch -a --contains <commit>
【讨论】:
在我的 Git 版本 1.7.1 上,我可以简单地执行git branch --contains <tag>
。
@DanMoulding 是的,我已经编辑了答案以反映这一点。我最初对找到附加到标签的提交感兴趣。
在这种情况下,寻找在远程分支上创建的标签不会产生任何结果。换句话说,对于本地不存在的分支,不会产生任何结果。选项 -a 应该用于此。 git branch -a --contains <tag>
。同样适用于提交。
不幸的是,这会返回多个内容: * (HEAD detached at 82dd3f0) master refs/tags/0.0.1-test-masterBr --> 我想以编程方式访问分支,没有 HEAD 信息或标签本身
git branch --contains <tag>
。 git 版本 2.23.0,zsh,打开 SUSE tumbleweed。我不认为这特定于我的操作系统或 shell,我认为这是现代 git 版本的默认设置。他们在寻呼机中打开一个列表【参考方案2】:
如果“git branch --contains”什么都不做,请确保您包含所有分支,包括远程和本地分支:
git branch -a --contains <tag>
来自 git 帮助:
具体的 git-branch 动作: -a, --all 列出远程跟踪和本地分支
【讨论】:
【参考方案3】:关于@VonC 关于查找标签引用的提交的评论,只需使用:
git show <tag>
由于标签与特定提交相关联,因此可用于显示该提交 - 这将为您提供完整的提交详细信息。
【讨论】:
【参考方案4】: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
【讨论】:
【参考方案5】:你也可以试试这个,有类似的用例,这对我有用
git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA | sed "s/.*\///"
略有不同,但从@ttfreeman 的回答中汲取灵感
【讨论】:
【参考方案6】:使用标签可以标记参考。因此,当您在开发分支上并标记此状态时。您的标签在实际参考上。因此,在这种情况下,您可以查看 gitk 或其他显示树的工具。在那里你可以看到标签在哪个引用上。
git: Is there something like per-branch tags?http://git-scm.com/book/en/Git-Basics-Tagging
这里有一个很好的解释。
【讨论】:
【参考方案7】:标签总是指提交号。使用该标签号,您可以使用以下命令找到放置标签的分支:
git for-each-ref | grep $commit_num | grep origin | sed "s/.*\///"
【讨论】:
【参考方案8】:第 1 步。获取提交 ID:
git show tag name
第 2 步。复制提交 ID 并粘贴以获取所有分支:
By example:
git branch --contains 94a152c2d1c6830c5a044ecf20526d51e64bda83
【讨论】:
以上是关于Git:如何找出标签在哪个分支上?的主要内容,如果未能解决你的问题,请参考以下文章