我目前正在忙着一个有很多分支的项目,我有一个标签用于最后一次更改,其中一个分支完成。但是我不清楚这个标签是哪个分支。
如何找出标签所在的分支?
答案 0 :(得分:73)
更短:
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>
下面的commented user3356885,对于获取的分支(在远程命名空间中的分支)
git branch -a --contains tags/<tag>
git branch -a --contains <commit>
答案 1 :(得分:15)
如果“git branch --contains”什么都不做,请确保包含所有分支,包括远程和本地分支:
git branch -a --contains <tag>
来自git帮助:
特定的git-branch动作: -a, - all列出远程跟踪和本地分支
答案 2 :(得分:5)
git branch --contains tag
对我没有任何帮助,但我在 git gui 中找到了解决此问题的方法。
像这样开始:
git gui
(在我的Ubuntu上,我必须先用sudo apt-get install git-gui
安装它。)
然后我选择了菜单项 Repository - &gt;可视化所有分支历史记录。在结果窗口中,我然后选择菜单项文件 - &gt;列表参考。
弹出另一个窗口,列出我的所有标签(以及其他参考文献)。这些是可点击的,点击其中一个之后我只需检查左下方框架的分支列表。像这样:
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 :(得分:0)
使用标记标记参考。所以当你在dev分支上并标记这个状态时。您的标签是实际参考。因此,在这种情况下,您可以查看 gitk 或其他显示树的工具。在那里你可以看到Tag的参考文献。
git: Is there something like per-branch tags?
http://git-scm.com/book/en/Git-Basics-Tagging
这是一个很好的解释。
答案 4 :(得分:0)
关于@ VonC关于查找标签引用的提交的评论,只需使用:
git show <tag>
由于标记与特定提交相关联,因此可以使用它来显示提交 - 这将为您提供完整的提交详细信息。
答案 5 :(得分:0)
标签始终引用提交编号。使用该标签号,您可以使用以下命令找到放置标签的分支:
git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"
答案 6 :(得分:0)
您也可以尝试一下,有类似的用例,这对我有用
git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA | sed "s/.*\///"
稍有不同,但从@ttfreeman的答案中汲取了灵感