【问题标题】:How to get the name of the specific branch where a tag is created in GIT如何获取在 GIT 中创建标签的特定分支的名称
【发布时间】:2012-03-01 11:48:58
【问题描述】:

我知道 git 命令“git branch --contains”可以显示在哪个分支上可以找到标签。但输出包括所有子/子分支。例如:

master ----------------------------
          |    \
        tag_X   \
                 \
                  ------------------ branch_A
                    |      \
                   tag_Y    \
                             \
                              --------------- branch_B

当我们运行“git branch --contains tag_X”时,我们会得到

branch_A
branch_B
master

虽然 tag_X 是在 master 上创建的,而不是 branch_A 和 branch_B

git 中是否有任何命令仅显示最初创建标签的特定分支,不包括所有子/子分支?如果没有,知道如何获取它(从日志、状态等解析)? 谢谢!

【问题讨论】:

    标签: git tags branch


    【解决方案1】:

    你是如何尝试的

    git branch --contains <commit>

    不确定它是否适用于标签名称,您可能需要执行 git show 才能获取关联的哈希

    取自How to list branches that contain a given commit?

    【讨论】:

    • Olivier,我发现使用关联的哈希值与使用标签名称的输出相同,即没有给出特定的分支。不过感谢您的回复!
    【解决方案2】:

    Git 不存储它。标签只是一个指向提交的名称。如果你查看 .git/refs/tags 你会看到一个包含每个标签的提交引用的文本文件。

    由于多个分支可以共享同一个提交,一个标签可以属于多个分支。也无法从日志中获取,因为唯一存储的是相关的提交。

    【讨论】:

    • 贾里德,感谢您的回复。我发现最初创建标签的特定分支显示为“git branch --contains tag”输出的第一个分支(在底部)。其余的分支(如果存在)只是该分支的继承相同标签的子(ren)。
    • 我不确定这是否适用于所有情况。如果你从一个分支开始,然后做了几个分叉,这是有道理的;你可以想象它沿着提交树走,当它到达提交时,首先输出它所在的分支。但是,如果您有两个交错的分支,因为您已在多个点将它们合并到一起,该怎么办?我得试试看。另一件事是在您的示例中,如果您在 branch_A 上创建了 tag_X,它仍然会在 --contains 的列表中首先打印 master。
    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 2022-07-21
    • 2010-11-27
    • 2014-02-12
    • 1970-01-01
    • 2019-06-23
    • 2011-09-08
    相关资源
    最近更新 更多