远程标签未在本地显示

29

我刚开始使用git和标签。我的团队成员运行了以下命令:

git tag v1.27.1
git push origin v1.27.1 
现在当我在我的环境中运行git pull,然后运行git tag时,我希望看到所有标签的列表。我可以看到以类似方式推送到存储库中的其他标签,但是没有看到这个特定的标签。我想找出这个标签丢失的原因和位置,该如何做?应该采取什么方法?
另外,创建了该标签的团队成员在运行git tag时可以在他的机器上看到该标签。谢谢!

1
截至2019年1月16日,git pull已经可以获取标签了。你只需要确保创建标签的机器执行git push --tags命令,否则标签只会存在于该机器上! - P i
1个回答

77

不幸的是,默认情况下git pull不会获取标签。你需要运行git fetch --tags,才能获取标签。

git pullgit fetch的默认行为仅检索当前引用可直接访问的标签。如果有任何标签无法访问,则不会被获取。使用--tags参数告诉git要获取所有标签,无论它们是否可通过当前引用到达。


那么,当我 git pull 后,如何查看我的团队成员添加的其他标签呢? - user_stackoverflow
2
git tag 将会给你列出所有的标签。所以 git tag | grep v1.27.1 应该会显示你之前缺失的标签。如果你在使用 --tags 拉取后仍然看不到它,那么我建议你使用 git ls-remote <url-to-remote> 命令检查远程仓库,并在列表中查找该标签。如果它不存在,那么它从未被推送到你的中央仓库,因此开发人员需要将其推送。 - John Szakmeister
2
谢谢你的解决方案,git fetch --tags 对我有用。不过我并不完全理解这个。当我们说当前引用可以直接访问时,什么是当前引用的意思? - user_stackoverflow
3
这并非完全正确,但引用基本上就是分支。在 Git 中,分支使用引用实现,这意味着有一个包含指向分支当前最新提交的 SHA1 的文件。当你向分支提交时,Git 会更新该引用以指向新的最新提交。因此,如果你有一个标签直接与分支相连,那么 Git 也会将该标签拉取下来。希望这能让您理解,但可能会有些抽象 :-)。 - John Szakmeister
2
@mike 你可能想要查看 push.followTags 配置选项。我使用它来帮助推送标签,而不必进行单独的 git push --tags。 :-) - John Szakmeister
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接