【问题标题】:Git global tags--- evidently bad, but why?Git 全局标签——显然很糟糕,但为什么呢?
【发布时间】:2009-11-24 23:50:14
【问题描述】:

在他的2005 email to the Linux Kernel mailing list 中,Linus Torvalds 非常强调 git 中的标签应该是私有的,而不是在从其他人那里获取时自动包含:

拉一个常规的头部不能必须更新标签。标签不是 与树相关联,它们不能必须 如此,完全正确 因为这会使它们成为全局而不是私有的,而且它会 从根本上使它们不被分发

和:

认为获取别人的树是错误的,错误的,错误的 表示你应该获取他的标签。

我不是核心黑客。我使用 git 的原因之一是能够从不同的位置编辑我自己的代码。标签似乎是描述不同版本以供将来参考的一种自然方式,例如什么有效,什么无效,存在什么怪癖。因此,对我来说,让标签在提取过程中持续存在似乎很有帮助。有人可以解释这种范式的危险是什么吗?

为什么拥有私有标签如此重要?什么是替代方案?每次我可能想要标记特定版本的代码时,我是否应该简单地创建一个单独的分支?

【问题讨论】:

  • 注意只是默认的;标签不会被推送,因为默认情况下 git push 匹配。获取 git autofolows 标签时(即在获取它们指向的提交时获取它们)。您始终可以配置 git 以推送/获取所有标签。

标签: git version-control linux-kernel versioning tags


【解决方案1】:

那里的关键词是“不自动包括在内”。您可以推送和拉取标签,您只需在推/拉命令中指定它。试试git push --tags

(其实这些天标签是自动拉取的,但是推送必须是显式的。)

【讨论】:

  • 实际上标签是 autofollowed 在 fetch 默认情况下,这意味着 git 会获取指向 fetched 提交的标签。
  • 标签不会在推送过程中自动包含,因为默认情况下 git 会推送 matching 引用(并且根据定义,新标签不会出现在远程端,因此不会匹配) .
【解决方案2】:

我不知道,但标签 实际上是这些天来获取的,而且这已经是很长一段时间的默认设置了。

当我用今天的 git 术语来看时,你引用的部分中的措辞似乎让我感到困惑,所以我敢说 Linus 的声明已经过时了。

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2017-10-20
    • 2020-05-10
    • 2011-06-07
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多