我目前正忙于一个有很多分支的项目,并且我有一个标记用于最后一次更改,该更改是在其中一个分支上完成的。但我不清楚这个标签在哪个分支上。
如何找出标签在哪个分支上?
更短:
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>
如果“git branch --contains”什么都不做,请确保您包含所有分支,包括远程和本地分支:
git branch -a --contains <tag>
从 git 帮助:
具体的 git-branch 操作:-a, --all 列出远程跟踪和本地分支
关于@VonC 关于查找标签引用的提交的评论,只需使用:
git show <tag>
由于标签与特定提交相关联,因此它可用于显示该提交 - 这将为您提供完整的提交详细信息。
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
你也可以试试这个,有类似的用例,这对我有用
git ls-remote --heads origin | grep $CI_COMMIT_SHORT_SHA | sed "s/.*\///"
略有不同,但从@ttfreeman 的回答中汲取灵感
使用标签可以标记参考。因此,当您在开发分支上并标记此状态时。您的标签在实际参考上。因此,在这种情况下,您可以查看gitk或其他显示树的工具。在那里你可以看到标签在哪个参考上。
git:是否有类似每个分支的标签?
http://git-scm.com/book/en/Git-Basics-Tagging
这是一个很好的解释。
标签总是指提交号。使用该标签号,您可以使用以下命令找到放置标签的分支:
git for-each-ref | grep ${commit_num} | grep origin | sed "s/.*\///"
步骤 1. 获取提交 ID:
git show {tag name}
步骤 2. 复制提交 ID 并粘贴以获取所有分支:
By example:
git branch --contains 94a152c2d1c6830c5a044ecf20526d51e64bda83