【问题标题】:Get git tag of checked out revision?获取签出版本的 git 标签?
【发布时间】:2013-03-20 03:43:18
【问题描述】:

我在做

$ git tag

current
tag_example_to_test_task

$ git checkout tag_example_to_test_task

...

HEAD is now at 75fdde3... commit comment text example

 $ git name-rev --name-only --tags HEAD

current

$ git describe --exact-match --tags

current

我需要用这样的命令结束执行序列:

$ git "some command here"

tag_example_to_test_task

如何做到这一点?如何获取当前签出标签的标签名称?

【问题讨论】:

  • 您想列出所有标签吗? git标签-l

标签: git tags


【解决方案1】:

这应该可以解决问题:

git tag --points-at=$(git rev-parse HEAD)

git rev-parse HEAD 将获取当前 HEAD 的 SHA256。如果这个提交恰好被标记,这将被回复。如果当前 HEAD 没有被标记,则结果为空。

【讨论】:

  • 您的回答没有解释当单个提交中有 2 个标签时会发生什么,这就是问题所在。
【解决方案2】:

这只会输出最新提交的标签。

# git log | head -1
commit 507e0647efd7e49aee53b14da970a7c2bf24555b

【讨论】:

    【解决方案3】:

    要找到你当前提交的原因,你可以使用

    git reflog | sed q
    

    查找您的最后一次结帐:

    git reflog | sed '/ checkout: /! d; q'
    

    这会让你得到类似的东西

    b836444 HEAD@{7}: checkout: moving from AMFD to testing
    

    表明您在执行git checkout testing 后添加了七次提交。

    【讨论】:

      【解决方案4】:

      如果您想了解当前版本的详细信息,请使用git describe。它会告诉您最后一个标签以及该标签之后的提交次数。人类可读,而不是真正用于程序消耗。

      【讨论】:

        【解决方案5】:

        我认为

        git log -n 1 --pretty=format:'%d'
        

        应该可以解决问题。

        但是,它会显示所有分支的名称和当前版本的标签。我认为不可能只获得用于检查修订的单个标签。

        【讨论】:

          猜你喜欢
          • 2018-07-01
          • 2014-01-30
          • 1970-01-01
          • 2012-07-25
          • 1970-01-01
          • 2014-09-04
          • 2015-07-01
          • 2013-11-14
          • 2014-04-14
          相关资源
          最近更新 更多