gpt4 book ai didi

git - git 标签到底指向什么?

转载 作者:行者123 更新时间:2023-12-02 19:13:27 25 4
gpt4 key购买 nike

git 标签是否指向特定的 sha1、特定分支上的特定提交或其他内容?

这个问题与 What happen to Git tags pointing to a removed commit 极其相似,但我无法在那里找到我正在寻找的答案。

让我们使用以下示例:

            C (Branch, cut with same commit history)
|
A-----B-----C (Main)

我试图帮助自己回答以下问题:

  1. 如果我在剪切分支之前在 Main 上标记提交 C,我的标记是否适用于 Main 和/或 Branch?

  2. 如果我在剪切分支后在 Main 上标记提交 C,我的标记是否同时适用于 Main 和/或 Branch?

  3. 如果我在剪切分支后在分支上标记提交 C,我的标记是否同时适用于主分支和/或分支?

  4. 如果有不同的提交历史记录会发生什么?例如,以下内容是否会发生变化:

                C-----D-----E (tag on E in either the main branch or this branch)
    |
    A-----B-----C-----E

编辑:看起来 #4 是不可能的,因为如果父项不同,提交就不能具有相同的哈希

最佳答案

普通标签只是特定 Git 对象的名称,该对象通常是一次提交,但也可以是树、blob 或任何其他带有哈希值的东西。

带注释的标签本身就是一个不同的对象,其中包含对另一个对象的引用。

关于您的问题:

  1. 它适用于 C。MainBranch 当前只是同一提交的两个其他名称。但是提交到任一分支都不会影响标记所引用的内容;它将保留为提交 C 的名称。

  2. 都不是。该标签引用的是 C,而不是任何也可能引用 C 的分支头。

  3. 都不是。它指的是C。

  4. 分支历史实际上没有意义。你的两个 C 是不同的提交,你的两个 E 也是如此。该标签将恰好引用两个 E 中的一个。

简而言之:标签通常独立于分支。

关于git - git 标签到底指向什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63961671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com