远程标签未在本地显示

use*_*low 13 git git-tag

我是新手使用git和标签.我的团队成员运行了以下命令:

git tag v1.27.1
git push origin v1.27.1 
Run Code Online (Sandbox Code Playgroud)

现在当我git pull然后git tag在我的环境中运行时,我希望看到所有标签的列表.我可以看到以类似方式推送回购的其他标签,但不是这个特定的标签.我想知道这个标签是如何丢失的.我怎样才能做到这一点?我的方法应该是什么?

此外,我创建标签的团队成员在运行时可以在他的机器上看到标签git tag 谢谢!

Joh*_*ter 37

不幸的是,git pull默认情况下不会获取标签.你需要运行git fetch --tags,然后你才能拥有它们.

的默认行为git pull,并git fetch是唯一的检索是由当前参考直接访问标签.如果没有任何标签,则不提取这些标签.传递--tagsgit fetch告诉你希望他们所有的,无论他们是通过电流引用或不可达饭桶.

  • 这并不完全正确,但引用几乎是分支。在 Git 中,分支是使用引用实现的,这几乎意味着有一个文件包含指向分支当前尖端的 SHA1。当您提交到一个分支时,Git 会更新引用以指向新的提示。因此,如果您有一个可以从分支直接访问的标签,那么 Git 也会拉入该标签。我希望这是有道理的。它确实有点抽象。:-) (3认同)
  • git tag将为您提供所有标签的列表。所以`git tag | grep v1.27.1`应该显示您之前丢失的标签。如果使用`--tags`提取后仍然看不到它,那么我将使用`git ls-remote <url-to-remote>`检查远程存储库,并在清单中检查标签。如果不存在,则它永远不会到达您的中央存储库,因此开发人员需要将其推送。 (2认同)
  • 谢谢您的解决方案,git fetch --tags对我有用。我对此并不完全理解。当我们说当前引用可以直接访问时,当前引用是什么意思? (2认同)
  • @mike您可能想看看 [push.followTags](https://git-scm.com/docs/git-config#Documentation/git-config.txt-pushfollowTags) 配置选项。我用它来帮助推送标签,而无需执行单独的“git push --tags”。:-) (2认同)