显示你在哪个git标签?
我无法找出哪个标签目前被检出。
当我做:
git checkout tag1 git branch
我似乎无法找出我在哪个标签。 它只logging:
* (no branch) master
是否有可能找出哪些标签被检出? 在上面的例子中,这将是tag1
。
编辑 :JakubNarębski有更多的git-fu。 以下更简单的命令完美地工作:
git describe --tags
(或者如果你已经签出了一个带注释的标签没有 – 标签,我的标签是轻量级的,所以我需要–tags。)
原来的答案如下:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
有更多的git-fu的人可能有一个更优雅的解决scheme…
这利用了这个事实,即git-log
从你检出的内容开始报告日志。 %h
打印缩写的散列。 然后git describe --exact-match --tags
发现标签(轻量级或注释),完全匹配的提交。
上面的$()
语法假定你正在使用bash或类似的。
这对我工作git describe --tags --abbrev=0
当你签出一个标签,你有什么所谓的“分离的头” 。 通常情况下,Git的HEAD提交是一个指向你目前已经签出的分支的指针。 但是,如果您查看本地分支以外的东西(例如标签或远程分支),则会出现“脱离头部” – 您并不是真的在任何分支上。 你不应该在一个孤立的头上做任何提交。
如果您不想进行任何编辑,可以查看标签。 如果你只是检查文件的内容,或者你想从一个标签build立你的项目, 只要你不提交任何提交 ,可以git checkout my_tag
并处理文件。 如果你想开始修改文件,你应该创build一个基于标签的分支:
$ git checkout -b my_tag_branch my_tag
将从my_tag_branch
开始创build一个名为my_tag_branch
的新分支。 在这个分支上提交更改是安全的。
git describe
是一个瓷器命令,你应该避免:
http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
相反,我用:
git name-rev --tags --name-only $(git rev-parse HEAD)
显示当前HEAD(或提交)
git tag --points-at HEAD
git log --decorate
这将告诉你什么是指向当前签出的提交。