【问题标题】:Can I have private git tags that are not sent via a push?我可以拥有不通过推送发送的私有 git 标签吗?
【发布时间】:2011-07-25 20:42:01
【问题描述】:

如果我标记我正在处理的提交,然后将更改推送到另一个 repo,我知道我也可以推送标记对象。我可以创建不推送的标签吗?是例如轻量级标签从不推送,但标签对象总是推送?

【问题讨论】:

  • 当然,不要要求他们被推送。你有什么问题?
  • git 标签和推送文档并没有具体说明实现的功能——在推送 --tags 或 --all 完成之前,我没有找到标签是私有的明确声明。在其他地方 (stackoverflow.com/questions/787797/cannot-commit-a-git-tag) Jakub Narębski 提到“如果你在你的分支上创建新的提交,然后推送(所以有一些东西要传输),git 应该检测到所有指向远程推送后存在的提交的新标签,也推他们。”这是不正确的吗?我正在寻找有关何时传输或未传输标签的明确信息。
  • @Vincent Scheib - 看看我的回答和stackoverflow.com/questions/2988088/…,你引用的同一个人说了不同的话。

标签: git


【解决方案1】:

标签不会自动推送,您必须手动推送。

另一方面,git push --allgit push --tags 推送每个标签,所以你必须小心。


资源:

关于同一主题:

【讨论】:

    【解决方案2】:

    标签是在.git/refs/tags/ 中创建的,.git/refs 下的任何内容都可以可能根据您添加到 push 或其他命令的标志进行推送。话虽如此,

    默认情况下,git push 命令不会将标签传输到远程 服务器。您必须将标签显式推送到共享服务器 在你创建它们之后。

    http://progit.org/book/ch2-6.html

    根据@Vincent Scheib 的评论,在另一个问题中询问以下引用的评论:

    “如果你在你的分支上创建新的提交,然后推送(所以有一些东西要传输),git 应该检测所有指向远程端推送后存在的提交的新标签,并推送它们。”

    这是无效的。虽然在fetch的时候适用,但被误认为适用于push。

    【讨论】:

    • 谢谢,由于实验验证的混合信号:除非明确命名,否则不会推送(任何类型的)标签。在其他 Q 中,“git push tag ”和“git push --tags”是显式选项。
    【解决方案3】:

    不要使用git push --allgit push --tags。创建 public 标签时,请使用以下命令:

    git push origin TAG_NAME
    

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多