显示您所在的 git 标签?

问题描述 投票:0回答:7

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

当我这样做时:

git checkout tag1
git branch

我似乎无法找出我所在的标签。它只记录:

* (no branch)
master

是否可以查出哪些标签被签出?在上面的示例中,这将是

tag1

git git-checkout git-tag
7个回答
459
投票

编辑

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 或类似的。


112
投票

这对我有用

git describe --tags --abbrev=0

编辑 2020:正如下面的一些评论所提到的,这可能对你有用,也可能对你不起作用,所以要小心!


100
投票

显示当前 HEAD(或提交)上的所有标签

git tag --points-at HEAD

30
投票

git describe
是一个 porcelain 命令,您应该避免使用:

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

相反,我使用:

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

25
投票

当您检查标签时,您会看到所谓的“分离头”。通常,Git 的 HEAD 提交是指向您当前已签出的分支的指针。但是,如果您检查本地分支(例如标签或远程分支)以外的其他内容,那么您就有一个“分离的头”——您实际上并不在任何分支上。你不应该在分离的状态下进行任何提交。

如果您不想进行任何编辑,可以签出标签。如果您只是检查文件的内容,或者您想从标签构建项目,则可以

git checkout my_tag
并使用文件,只要您不进行任何提交。如果你想开始修改文件,你应该根据标签创建一个分支:

$ git checkout -b my_tag_branch my_tag

将从

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


12
投票

git log --decorate

这将告诉您哪些引用指向当前签出的提交。


3
投票

这是针对一组特定用例的有趣示例。如果您的存储库有

v1.0.0
v1.1.0
v1.1.1
等版本,以及指向最新
v1
的速记版本(例如
v1.x.x
),下面将为您提供当前版本的参考- 与最新的完整版本化标签相关的签出提交,如果不起作用,则使用后备:

git describe --tags --exact-match --match "v*.*.*" \
  || git describe --match "v*.*.*" --tags \
  || git describe --tags \
  || git rev-parse HEAD

假设您有以下提交:

* 4444444 (main, origin/main, tag: v2.0.0, tag: v2.0, tag: v2)
* 3333333
* 2222222 (tag: v1.1.0, tag: v1.1, tag: v1)
* 1111111 (tag: v1.0.0, tag: v1.0)
* 0000000

上述命令对于几个示例 HEAD 的输出:

  • git checkout main
    ->
    v2.0.0
  • git checkout 3333333
    ->
    v1.1.0-1-g3333333
  • git checkout 2222222
    ->
    v1.1.0
  • git checkout v1
    ->
    v1.1.0
  • git checkout 0000000
    ->
    0000000
    (完整参考)

我发现这对于 GitHub Actions 存储库很有用,您需要在其中维护一组详细的速记版本标签。

© www.soinside.com 2019 - 2024. All rights reserved.