Comment voir les balises distantes?

136

Dans Atlassian SourceTree, comment savoir quelles balises sont uniquement locales et lesquelles sont également distantes?

Lors de la création d'un tag, vous obtenez l'option "Push tag to: ...", mais comment savoir si un tag a été poussé ou non après sa création? Je peux voir toutes mes balises localement, mais je dois être sûr qu'elles sont présentes à distance afin que d'autres développeurs puissent les extraire.

cprcrack
la source
J'ai mis à jour ma réponse ci-dessous pour aborder spécifiquement Atlassian SourceTree.
VonC

Réponses:

121

Même sans clonage ni récupération, vous pouvez consulter la liste des balises sur le dépôt en amont avec git ls-remote:

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

(comme illustré dans " Lors de la liste de git-ls-remote pourquoi il y a" ^{}"après le nom de la balise? ")

xbmono illustre dans les commentaires que des citations sont nécessaires:

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

Notez que vous pouvez toujours pousser vos commits et balises en une seule commande avec (git 1.8.3+, avril 2013):

git push --follow-tags

Voir Push git commits & tags simultanément .


Concernant Atlassian SourceTree en particulier:

Notez que, à partir de ce fil , SourceTree affiche UNIQUEMENT les balises locales.

Il y a un RFE (Request for Enhancement) connecté SRCTREEWIN-4015depuis décembre 2015.

Une solution de contournement simple:

voir une liste de balises non poussées uniquement?

git push --tags

ou cochez la Push all tagscase "" dans la boîte de dialogue "Push", toutes les balises seront poussées vers votre télécommande.

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

De cette façon, vous serez "sûr qu'ils sont présents dans remote afin que d'autres développeurs puissent les extraire".

VonC
la source
3
C'est génial mais je demandais comment le savoir avec Atlassian SourceTree, pas en ligne de commande git.
cprcrack
J'ai essayé refs/tags/MyTag^{}d'obtenir un identifiant de validation lié à cette balise mais cette commande git ls-remotene renvoie rien. Existe-t-il un moyen d'obtenir l'ID de validation d'une balise déréférencée?
xbmono
@xbmono Cela devrait être stackoverflow.com/a/12939216/6309
VonC
1
@xbmono Bonne prise! J'ai inclus votre commentaire dans la réponse pour plus de visibilité.
VonC
145

Vous pouvez répertorier les balises sur le référentiel distant avec ls-remote, puis vérifier si elles sont présentes. Supposons que le nom de la référence distante soit originle suivant.

git ls-remote --tags origin

Et vous pouvez lister les balises locales avec tag.

git tag

Vous pouvez comparer les résultats manuellement ou dans un script.

Landys
la source
1
@VonC Vous êtes plus rapide. :) J'essaie de résoudre plus de gitquestions pour me familiariser git. :)
Landys
Pas de problème: c'est ainsi que j'apprends Git depuis fin 2008.
VonC
1
C'est génial mais je demandais comment le savoir avec Atlassian SourceTree, pas en ligne de commande git.
cprcrack
2
@cprcrack Vous demandiez donc si Atlassian SourceTree fournit la fonctionnalité permettant d'afficher les balises distantes dans l'interface graphique, n'est-ce pas? J'ai un regard grossier, et il semble que non. Mais pourquoi ne pas simplement cliquer sur le menu Actions -> Open in Terminal, puis taper git ls-remote --tags originet exécuter?
Landys
2
@Landys Merci, c'est utile. Lors de la liste des balises distantes, je vois des entrées doubles. Ils ont un ID de différence mais le même nom de balise sauf avec le suffixe ^ {}. Exemple: release-v1.0, release-v1.0 ^ {}, release-v1.1, release-v1.1 ^ {}, etc. Savez-vous ce que sont ces entrées supplémentaires? Bien que les entrées supplémentaires aient un ID de différence, git log <ID> donne la même sortie.
shiouming