显示您所在的git标签?

时间:2010-08-04 11:10:50

标签: git git-checkout git-tag

我无法找到当前检出的标签。

当我这样做时:

git checkout tag1
git branch

我似乎无法找出我在哪个标签上。它只记录:

* (no branch)
master

是否可以找出签出的标签?在上面的示例中,这将是tag1

7 个答案:

答案 0 :(得分:258)

编辑:JakubNarębski有更多的git-fu。以下更简单的命令可以完美地运行:

git describe --tags

(如果您已签出带注释的标签,则没有--tags。我的标签很轻,所以我需要--tags。)

原始答案如下:

git describe --exact-match --tags $(git log -n1 --pretty='%h')

有更多git-fu的人可能会有一个更优雅的解决方案...

这利用了git-log从您检出的内容开始报告日志的事实。 %h打印缩写的哈希值。然后git describe --exact-match --tags找到与该提交完全匹配的标记(轻量级或注释)。

上面的$()语法假定您使用的是bash或类似的。

答案 1 :(得分:45)

这对我有用git describe --tags --abbrev=0

答案 2 :(得分:28)

显示当前HEAD(或提交)

上的所有标签
\r

答案 3 :(得分:21)

当您签出标签时,您拥有所谓的"detached head"。通常,Git的HEAD提交是指向您当前已检出的分支的指针。但是,如果您检查的不是本地分支(例如标签或远程分支),那么您有一个“分离头” - 您实际上并不在任何分支上。你不应该在一个独立的头上做任何提交。

如果您不想进行任何编辑,可以签出标签。如果您只是检查文件的内容,或者您​​想要从标记构建项目,那么git checkout my_tag可以使用文件,只要您不进行任何提交< / em>的。如果要开始修改文件,则应根据标记创建分支:

$ git checkout -b my_tag_branch my_tag

将从my_tag_branch开始创建名为my_tag的新分支。在这个分支上提交更改是安全的。

答案 4 :(得分:20)

git describeporcelain命令,您应该避免:

http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html

相反,我使用了:

git name-rev --tags --name-only $(git rev-parse HEAD)

答案 5 :(得分:7)

git log --decorate

这将告诉你什么引用指向当前检出的提交。

答案 6 :(得分:0)

这对我有用 git describe --abbrev = 0 --tags