我无法找出当前签出的标签。
当我做:
git checkout tag1
git branch
我似乎无法找出我在哪个标签上。它只记录:
* (no branch)
master
是否可以找出签出的标签?在上面的例子中,这将是tag1
.
我无法找出当前签出的标签。
当我做:
git checkout tag1
git branch
我似乎无法找出我在哪个标签上。它只记录:
* (no branch)
master
是否可以找出签出的标签?在上面的例子中,这将是tag1
.
编辑:Jakub Narę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 或类似的。
这对我有用git describe --tags --abbrev=0
编辑 2020:正如下面的一些评论所提到的,这可能对你有用,也可能对你不起作用,所以要小心!
显示当前 HEAD(或提交)上的所有标签
git tag --points-at HEAD
git describe
是一个瓷器命令,你应该避免:
http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
相反,我使用了:
git name-rev --tags --name-only $(git rev-parse HEAD)
当你签出一个标签时,你有一个所谓的“分离头”。通常,Git 的 HEAD 提交是指向您当前已签出的分支的指针。但是,如果您检查的不是本地分支(例如,标记或远程分支),那么您有一个“分离的头”——您实际上并不在任何分支上。你不应该在一个分离的头上进行任何提交。
如果您不想进行任何编辑,可以查看标签。如果您只是检查文件的内容,或者您想从标签构建您的项目,那么只要您不进行任何提交git checkout my_tag
,就可以使用并使用这些文件。如果你想开始修改文件,你应该基于标签创建一个分支:
$ git checkout -b my_tag_branch my_tag
将创建一个名为my_tag_branch
从 开始的新分支my_tag
。在此分支上提交更改是安全的。
git log --decorate
这将告诉您哪些 refs 指向当前签出的提交。