2013-06-28 41 views
4

我是使用git和标记的新手。我的团队成员运行以下命令:远程标记不在本地显示

git tag v1.27.1 
git push origin v1.27.1 

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

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

回答

21

不幸的是,git pull默认不抓取代码。你需要运行git fetch --tags,然后你会拥有它们。

git pullgit fetch的默认行为是仅检索当前引用可直接访问的标签。如果任何标签不是,那么这些不会被提取。通过--tagsgit fetch告诉git你希望他们全部,无论他们是否可以通过当前的引用。

+0

那我怎么看其他标签通过我的团队成员加入后,我的git拉? –

+1

'git tag'会给你一个所有标签的列表。所以'git标签| grep v1.27.1'应该显示你之前缺少的标签。如果在用'--tags'获取后仍然没有看到它,那么我会用'git ls-remote '检查远程存储库,并检查列表中的标记。如果它不在那里,那它就永远不会把它放到你的中央仓库,所以开发者需要推它。 – jszakmeister

+1

感谢您的解决方案,git fetch --tags为我工作。但我完全不理解这一点。当我们说当前引用可以直接访问时,当前引用是什么意思? –

0

默认情况下,混帐推命令不变量进行传送到远程服务器。创建完成后,您必须将标签显式推送到共享服务器。此过程就像共享远程分支 - 您可以运行git push origin <tagname>

如果您有很多标签要一次推出,您还可以使用gta push命令的--tags [git push --tags]选项。这会将所有标签转移到远程服务器,而这些服务器并不在那里。现在,当别人克隆或从你的资料库翻出

,他们将让所有的标签为好。

Source