代码之家  ›  专栏  ›  技术社区  ›  knipknap

“git descripe”忽略标记

  •  51
  • knipknap  · 技术社区  · 14 年前

    $ git tag -n1
    v1.8        Tagged the day before yesterday
    v1.9        Tagged yesterday
    v2.0        Tagged today
    $ git describe
    v1.9-500-ga6a8c67
    $ 
    

    有谁能解释为什么“git descripe”没有使用v2.0标记,以及如何解决这个问题?v2.0标签已经被推送,所以我猜我不能只是删除并重新添加它。

    3 回复  |  直到 11 年前
        1
  •  80
  •   knittl    14 年前

    git describe 默认情况下仅使用带注释的标记。指定 --tags 也可以选择使用轻量级标记

    确保您签出了正确的提交( git rev-parse HEAD ). 带注释的标记是用 git tag -a . 如果你这样做了 git show <tagname> 您只看到commit,它是一个轻量级标记,如果您看到一个附加标记消息,它是一个带注释的标记。

        2
  •  19
  •   eis    13 年前

    当这种情况发生在我们身上时,是两个标记应用于同一提交的情况。你可以通过运行

    # git log --oneline --decorate=short
    deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber
    

    这里有两个标记,一个用于版本19,另一个用于20。19岁之后,20岁被贴上了标签,但同样的罪名。在这种情况下,请描述返回的

    # git describe --tags
    v1.1.0.19.0
    

    我不知道它为什么这样做,但这似乎是如何与重复的标签工作。

    this blog post .

        3
  •  18
  •   q9f    5 年前

    git tag 显示 在所有分支中标记 git describe 仅在提交时使用当前可用的标记 .

    下面是一个例子(我来这里的原因):

     $ git tag | tail -n3
    v0.4.0
    v0.4.1
    v0.4.2
    

    它显示最新可用的标签是 v0.4.2 ,但这是我的输出 git描述

     $ git describe --tags
    v0.4.0-2-acd334c
    

    我在发展部门。当我深入日志时,我发现当前分支上确实没有最新的标记:

     $ git log --oneline --decorate=short | grep 'tag\:' | head -n3
    acd334c (tag: v0.4.0) Merge pull request #1061
    988fe5e (tag: v0.3.6) Merge pull request #859
    5f97274 (tag: v0.3.5) Merge pull request #646
    

    释放 专门用于标记发布的分支,这会导致开发分支不再与标记一起更新。

    希望这有帮助,并感谢@eis检查日志的想法。