在Atlassian SourceTree中,如何知道哪些标签只是本地的,哪些也是远程的?

当创建一个标签时,你会得到一个选项“将标签推到:…”,但是如何知道一个标签在创建后是否被推了呢?我可以在本地看到我的所有标记,但我需要确保它们在远程中存在,以便其他开发人员可以提取它们。


即使没有克隆或抓取,你也可以用git ls-remote检查上游repo上的标签列表:

git ls-remote --tags /url/to/upstream/repo

(如“当列出git-ls-remote时,为什么标记名后面有“^{}”?”所示)

Xbmono在注释中说明了需要引用:

git ls-remote --tags /some/url/to/repo "refs/tags/MyTag^{}"

注意,你总是可以在一个命令中推送你的提交和标签(git 1.8.3+, 2013年4月):

git push --follow-tags

参见同时推送git提交和标记。


具体到Atlassian SourceTree:

注意,在这个线程中,SourceTree只显示本地标记。

自2015年12月以来,SRCTREEWIN-4015中有一个RFE (Request for Enhancement)。

一个简单的解决方法:

看到只有未推标签的列表吗?

Git push—标签 或勾选“推送”对话框中的“推送所有标签”框,所有标签将被推送到您的遥控器。

这样,你就可以“确保它们存在于远程中,以便其他开发人员可以提取它们”。


您可以使用ls-remote列出远程存储库上的标记,然后检查它是否在那里。假设远程引用名称为下面的origin。

git ls-remote --tags origin

你可以用tag列出标签。

git tag

您可以手动或在脚本中比较结果。