grm*_*grm 197 git git-checkout git-tag
我无法找到当前检出的标签.
当我做:
git checkout tag1
git branch
Run Code Online (Sandbox Code Playgroud)
我似乎无法找出我在哪个标签上.它只记录:
* (no branch)
master
Run Code Online (Sandbox Code Playgroud)
是否有可能找出签出的标签?在上面的例子中,这将是tag1.
bst*_*rre 290
编辑:JakubNarębski有更多的git-fu.以下更简单的命令可以完美地运行:
git describe --tags
Run Code Online (Sandbox Code Playgroud)
(或者--tags如果你已经签出了带注释的标签,那就没有.我的标签很轻,所以我需要--tags.)
原始答案如下:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
Run Code Online (Sandbox Code Playgroud)
有更多git-fu的人可能会有更优雅的解决方案......
这利用了git-log从您检出的内容开始报告日志的事实.%h打印缩写哈希.然后git describe --exact-match --tags找到与该提交完全匹配的标记(轻量级或带注释的).
$()上面的语法假设您正在使用bash或类似的.
M K*_*M K 62
这对我有用 git describe --tags --abbrev=0
Geo*_*lka 40
显示当前HEAD(或提交)上的所有标签
git tag --points-at HEAD
Run Code Online (Sandbox Code Playgroud)
小智 22
git describe是瓷器命令,你应该避免:
http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
相反,我用过:
git name-rev --tags --name-only $(git rev-parse HEAD)
Run Code Online (Sandbox Code Playgroud)
mip*_*adi 21
当你签出一个标签时,你会得到一个叫做"独立头"的东西.通常,Git的HEAD提交是指向您当前已检出的分支的指针.但是,如果您检查的不是本地分支(例如标签或远程分支),那么您有一个"分离头" - 您实际上并不在任何分支上.你不应该在一个独立的头上做任何提交.
如果您不想进行任何编辑,可以签出标签.如果您只是检查文件的内容,或者您想从标签构建项目git checkout my_tag,只要您不进行任何提交,就可以使用这些文件.如果要开始修改文件,则应根据标记创建分支:
$ git checkout -b my_tag_branch my_tag
Run Code Online (Sandbox Code Playgroud)
将创建一个名为my_tag_branchstart from 的新分支my_tag.在此分支上提交更改是安全的.