Как увидеть удаленные теги?

136

Как в Atlassian SourceTree узнать, какие теги являются только локальными, а какие - удаленными?

При создании тега вы получаете опцию «Отправить тег в: ...», но как узнать, был ли тег добавлен или нет после его создания? Я могу видеть все свои теги локально, но мне нужно быть уверенным, что они присутствуют удаленно, чтобы другие разработчики могли их вытащить.

cprcrack
источник
Я обновил свой ответ ниже, чтобы конкретно обратиться к Atlassian SourceTree.
VonC

Ответы:

121

Даже без клонирования или выборки вы можете проверить список тегов в вышестоящем репозитории с помощью git ls-remote:

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 г.):

git push --follow-tags

См. « Одновременное нажатие коммитов и тегов git» .


Что касается Atlassian SourceTree, в частности:

Обратите внимание, что из этого потока SourceTree показывает ТОЛЬКО локальные теги.

Существует RFE (запрос на улучшение), на который вы вошли SRCTREEWIN-4015с декабря 2015 года.

Простой обходной путь:

увидеть список только неотталкиваемых тегов?

git push --tags

или установите Push all tagsфлажок "" в диалоговом окне "Push", все теги будут отправлены на ваш пульт.

https://community.atlassian.com/tnckb94959/attachments/tnckb94959/sourcetree-questions/10923/1/Screen%20Shot%202015-12-15%20at%208.49.48%20AM.png

Таким образом, вы будете «уверены, что они присутствуют на удаленном компьютере, чтобы другие разработчики могли их вытащить».

VonC
источник
3
Это здорово, но я спрашивал, как это узнать с помощью Atlassian SourceTree, а не командной строки git.
cprcrack
Я попытался refs/tags/MyTag^{}связать идентификатор фиксации с этим тегом, но эта команда git ls-remoteничего не возвращает. Есть ли способ получить идентификатор фиксации разыменованного тега?
xbmono,
@xbmono Это должно быть stackoverflow.com/a/12939216/6309
VonC
1
@xbmono Хороший улов! Я включил ваш комментарий в ответ для большей наглядности.
VonC
145

Вы можете перечислить теги в удаленном репозитории с помощью ls-remote, а затем проверить, есть ли они там. Предположим, что имя удаленной ссылки выглядит originследующим образом.

git ls-remote --tags origin

И вы можете перечислить теги местные с tag.

git tag

Вы можете сравнить результаты вручную или в скрипте.

Landys
источник
1
@VonC Ты быстрее. :) Пытаюсь решить еще gitвопросы, чтобы познакомиться git. :)
Лэндис
Нет проблем: именно так я изучаю Git с конца 2008 года.
VonC
1
Это здорово, но я спрашивал, как это узнать с помощью Atlassian SourceTree, а не командной строки git.
cprcrack
2
@cprcrack Итак, вы спрашивали, предоставляет ли Atlassian SourceTree функцию для просмотра удаленных тегов в графическом интерфейсе, верно? У меня грубый взгляд, а вроде нет. Но почему бы просто не щелкнуть меню Actions -> Open in Terminal, а затем ввести git ls-remote --tags originи запустить?
Лэндис,
2
@Landys Спасибо, это полезно. При перечислении удаленных тегов я вижу двойные записи. У них есть идентификатор различия, но то же имя тега, за исключением постфикса ^ {}. Пример: release-v1.0, release-v1.0 ^ {}, release-v1.1, release-v1.1 ^ {} и т. Д. Вы знаете, что это за дополнительные записи? Хотя дополнительные записи имеют идентификатор различия, git log <ID> дает тот же результат.
shiouming